我正在尝试使用Jasmine 2.0为AngularJS应用程序中的某些逻辑编写单元测试,但逻辑在一个事件监听器中.从控制器:
window.addEventListener('message', function(e) {
if (e.data === "sendMessage()") {
$scope.submit();
}
}, false);
Run Code Online (Sandbox Code Playgroud)
并从测试文件:
describe("post message", function() {
beforeEach(function(done) {
var controller = createController(controllerParams);
spyOn($scope, 'submit');
window.postMessage('sendMessage()', '*');
done();
});
it('should submit on a sent message', function (done) {
expect($scope.submit).toHaveBeenCalled();
done();
});
});
Run Code Online (Sandbox Code Playgroud)
但是测试失败了,间谍从未被击中.放入控制台调试语句的额外信息:
window.addEventListener 在控制器IS被调用.beforeEach和it块都得到调用.我的测试缺少什么?