AngularJS-指令单元不测试任何内容
AngularJS - directive unit test nothing
我正在尝试SIMPLE指令的单元测试,但它不起作用。我得到:Error: Unexpected request: GET my-directive.html
No more request expected
不知道这意味着什么,它在网页上有效。。。
现场演示:http://plnkr.co/edit/SrtwW21qcfUAM7mEj4A5?p=preview
方向性Spec.js:
describe('Directive: myDirective', function() {
beforeEach(module('myDirectiveModule'));
var element;
var scope;
beforeEach(inject(function($rootScope, $compile) {
scope = $rootScope.$new();
element = angular.element('<my-directive something="thing"></my-directive>');
element = $compile(element)(scope);
scope.thing = {name: 'My thing'};
scope.$digest();
}));
it('should update the rendered text when scope changes', function() {
scope.thing.name = 'My new thing';
scope.$digest();
var h1 = element.find('h1');
expect(h1.text()).toBe('My new thing');
});
});
app.js:
angular.module('myDirectiveModule', [])
.directive('myDirective', function() {
return {
bindToController: true,
controller: function() {
var vm = this;
vm.doSomething = doSomething;
function doSomething() {
vm.something.name = 'Do something';
}
},
controllerAs: 'vm',
restrict: 'E',
scope: {
something: '='
},
templateUrl: 'my-directive.html'
};
})
.controller('DirCtrl', ['$scope', function() {
this.getName = 'Hello world!';
}]);
如何简单地测试指令单元测试?
您需要模拟模板请求。因为该指令具有templateUrl
,所以它尝试发出get请求,但$http不期望有任何请求,因此它失败了。您可以用自己的响应模拟请求,或者将模板放入模板缓存服务中。
beforeEach(inject(function($rootScope, $compile, $templateCache) {
$templateCache.put('my-directive.html','<h1 ng-click="vm.doSomething()">{{vm.something.name}}</h1>');
scope = $rootScope.$new();
element = angular.element('<my-directive something="thing"></my-directive>');
element = $compile(element)(scope);
scope.thing = {name: 'My thing'};
scope.$digest();
}));
另外,在it
函数上,调用$apply
并使用$evalAsync
。看看我的叉子。
相关文章:
- jQuery中是否内置了任何字符串格式化函数
- javascript测试是否存在两个标志中的任何一个
- 有人知道有没有jquery插件可以在图像上写文本,并让用户将其放置在图像内的任何位置
- Mocking console.log()/MOCHA测试框架中的任何其他函数
- 是否有任何内置方法可以更改JavaScript对象'的属性设置为某个值
- 使用 CasperJS 时,是否可以在执行任何内联或外部 Javascript 之前与加载页面的 DOM 进行交互
- 如何使用 grunt 设置浏览器内测试
- 使用 Jasmine 在角度范围内测试 JavaScript 函数
- 在可安装轨道的发动机内测试AngularJS
- 找不到“”;应用程序“;模板或视图.对象{fullName:“template:application”}将不呈现任何内
- 如何在没有任何内置函数的情况下将元素添加到数组中
- 如何获得元素id点击没有任何内联函数调用在javascript
- 在javascript/jquery中是否有任何内置功能来过滤邮件,如php's函数(!使用filter_var
- 在JavaScript中过滤数组,而不使用任何内置函数或新数组
- Jquery是否有任何内置方法来单独查找可验证的元素?
- 我试图在不使用任何内置方法的情况下延迟此函数.为什么这行不通呢?
- 如何在不使用javascript中任何内置函数的情况下反转字符串
- CryptoJS SHA3不通过任何Keccak测试向量
- "TypeError:无法调用方法'投掷'未定义的“;单元内测试
- Angular Bootstrap-ui 是否有任何内置函数来处理打开或关闭的东西