假设我有一个指令:
angular.module('foo').directive('myDir', function () {
return {
restrict: 'E',
link: function (scope) {
var watcher = scope.$watch('foo, function () {});
scope.$on('$destroy', function () {
watcher();
});
}
}
})
然后进行以下测试:
describe('myDir', function () {
beforeEach(function () {
module('foo');
inject(function($compile, $rootScope) {
var scope = $rootScope.$new();
$compile('<my-dir></my-dir>')(scope);
scope.$digest();
});
});
it('listens for destroy', function () {
expect(scope.$$listeners.$destroy).to.not.equal(undefined);
});
});
哪个失败了:
Error: expected undefined to not equal undefined
奇怪的是,如果我console.log(scope.$$listeners.$destroy)
直接在expect
之前,则日志显示一系列函数,而不是未定义,但测试仍然失败。
是什么导致监听器对断言不可见?有一个很好的解决方法吗?
答案 0 :(得分:1)
从.to.not.equal
到
not.to.be
解决了问题