我正在使用Jasmine为我们的控制器编写单元测试,但希望得到社区对如何处理这种情况的反馈……
我有一个控制器 – InvoiceController,像这样:
angular.module('myModule').controller('myController',['$scope',function($scope) { $scope.doSomething = function() { $scope.something = 'bar'; }; } ]});
在我的单元测试中,我验证我的控制器具有预期的方法:
it('should be able to do some work',function() { // initialize scope properties scope.someProperty = 'foo'; // load controller using those properties injectController(); // do I have all of the functions necessary to do this work? expect(typeof (scope.doSomething)).toBe('function'); // Now execute test scope.doSomething(); expect(scope.something).toBe('bar'); }
最后,在我的html中,我有一个带有ng-click的元素,如下所示:
<button ng-click="doSomehing()">Do Something</button>
看起来不错吧?但是,有没有人抓住我做错了什么?
我的ng-click方法拼写错误,但所有测试都是绿色的,生活似乎很美好……直到我尝试点击那个人并且没有任何反应.没有渲染时错误,点击没有错误.嗯.
好几次,因为我正在重构代码,这让我感到满意.我在单元测试和控制器中重命名doSomething todoomeCooler但在html中错过了一个地方.经过一分钟的刮擦后,我发现错过了什么.
我喜欢一种确保标记有效的方法. E2E测试似乎是一个明显的解决方案,但那些容易出现脆弱性,因此我们希望有一些替代方案.
如果这是ASP.Net,我会从代码后面附加click事件,这样我就会得到编译时错误和运行时错误.
思考?
萨德
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。