angularjs – 如何对$mdSidenav服务进行单元测试?
发布时间:2020-12-17 17:41:16 所属栏目:安全 来源:网络整理
导读:我正在使用材料设计构建一个角度应用程序.我正在使用$mdSidenav服务来玩sidenav,它应该能够随着用户的需求打开和关闭. 我已经围绕它创建了一个包装器服务,如下所示: (function () { 'use strict'; angular .module('app.layout') .factory('navigationServi
我正在使用材料设计构建一个角度应用程序.我正在使用$mdSidenav服务来玩sidenav,它应该能够随着用户的需求打开和关闭.
我已经围绕它创建了一个包装器服务,如下所示: (function () { 'use strict'; angular .module('app.layout') .factory('navigationService',navigationService); navigationService.$inject = ['$mdSidenav']; function navigationService($mdSidenav) { var factory = {}; factory.toggle = toggle; return factory; ////////// function toggle() { $mdSidenav('left').toggle(); } } }()); 到目前为止这么好,它工作正常.当我尝试使用Jasmine为它编写单元测试时出现问题.我通常会创建存根或间谍来模拟我的依赖关系,但由于奇怪的使用方法,我无法用这个$mdSidenav完成它:$mdSidenav(sidenav-id). 通常,使用Jasmine来窥探你需要和对象以及你想要模拟的功能来监视它.运气好的话,我尝试了几种不同的可能性. 我的目标是类似于: beforeEach(module(function ($provide) { mdSidenav = {}; mdSidenav.toggle = jasmine.createSpy(); $provide.value('$mdSidenav',mdSidenav); })); beforeEach(inject(function(_navigationService_) { navigationService = _navigationService_; })); it('Should call $mdSidenav toggle when required',function() { // act navigationService.toggle(); // assert expect(mdSidenav.toggle).toHaveBeenCalled(); }); 有没有办法测试这个? 解决方法
我不熟悉材质设计库,但看起来$mdSidenav返回一个函数.
你为什么不替换:$provide.value(‘$mdSidenav’,mdSidenav); $provide.factory('$mdSidenav',function() { return function(direction){//if you use direction ('left' in your example) you could use it here return mdSidenav; }; }) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- twitter-bootstrap-3 – 想要Bootstrap 3轮播显示上一张和下
- angularjs – 在已解决的承诺中返回一个Observable
- 搭建高可用的redis集群,避免standalone模式带给你的苦难
- angularjs – 如何使用Bower升级到最新的Angular 1.3 beta版
- bash – tcpdump返回数据包之前的一秒延迟
- bash – 如何删除名称以’ – ‘开头的文件[复制]
- Angular 2动画“无法在’Element’上执行’animate’:不支
- Angular+NodeJs+MongoDB搭建前后端程序
- scala – 泛型类型的模式匹配
- WebService之MapPoint