Page 289 - AngularJS权威教程
P. 289
19.15 测试事件 269
cacheIdFromPath: function(filepath) { 19
return 'app/views/' + filepath;
},
stripPrefix: 'app/'
}, 20
在我们的测试里,可以接着把templates模块注入到测试中:
21
describe('Directive: myDirective', function () {
// 加载指令的模块
beforeEach(module('myApp')); 22
beforeEach(module('templates'));
templates模块注入到测试中之后,模板就已经通过templateUrl加载到指令中去了。因为 23
模板会被自动加载,无需再做什么来测试带有templateUrl的指令。
2. 端到端测试指令 24
当对指令进行端到端测试时,我们主要关心的并不是指令的功能:我们测试的是在一个全局
视图里,用户看到了什么,做了什么。 25
既然只是在测试视图,指令的端到端测试看上去跟测试模板差不多。
26
describe('E2E: directives', function() {
beforeEach(function() {
browser().navigateTo('/'); 27
});
it('should have the welcome message', function() { 28
expect(
element('.notification', 'Notification').html()
).toContain('Notification message');
}); 29
});
30
19.15 测试事件
在应用中使用事件,尤其是那些导致DOM产生交互的事件时,我们要建立测试来保证真实 31
的事件被触发了,它也得到了期待的事件数据。
我们也想建立测试来为在浏览器中捕获事件设置预期,想看看我们对事件的交互是否产生了 32
期望的响应。
1. 单元测试事件 33
当对事件的触发进行单元测试时,我们感兴趣的是它们究竟调用了什么,还有是否真的调用
了正确的事件。其次,我们主要关心处理程序有它们需要的数据。 34
使用Jasmine的辅助方法spnOn()可以非常容易地建立事件测试。
35
设想我们在测试一个控制器,它触发了一个$emit函数。基于这个函数,我们可以建立一个
预期:事件被触发了,并且用我们所感兴趣的任意参数调用了。
36