单元测试 – 模拟在茉莉花单元测试中的角模块依赖

我试图单元测试控制器代码一个模块,需要其他模块作为依赖,但没有能够弄清楚如何正确模拟它们。

我使用Jasmine框架和运行我的测试与Karma(Testacular)。

模块代码

var app = angular.module('events',['af.widgets','angular-table']);

app.controller('eventsCtrl',function([dependencies]){
    $scope.events = [];
    ...
});

规格代码

describe('events module',function(){
    var $scope,ctrl;

    beforeEach(function(){
        angular.mock.module('af.widgets',[]);
        angular.mock.module('angular-table',[]);
        module('events','angular-table']);
    });

    beforeEach(inject(function($rootScope,$controller){
        $scope = $rootScope.new();
        ctrl = $controller('NameCtrl',{
            $scope: $scope,});
    }));

    it('should have an empty events array',function(){
        expect($scope.events).toBe([]);
    })
});

我得到的错误是Karma是“没有模块af.widgets”,所以显然我不是模拟依赖模块的权利。任何提示

如果你想模拟一个声明一个或多个服务的模块,我使用了这个代码
beforeEach(function(){
    module('moduletoMock');
    module(function ($provide) {
        $provide.value('yourService',serviceMock);
    });
});

如果你想要模拟的服务也是你想要单元测试的服务(在另一个茉莉花描述),这是有用的。fscof提出的解决方案很好,但是您不能为角度表模块创建单元测试。

相关文章

迭代器模式(Iterator)迭代器模式(Iterator)[Cursor]意图...
高性能IO模型浅析服务器端编程经常需要构造高性能的IO模型,...
策略模式(Strategy)策略模式(Strategy)[Policy]意图:定...
访问者模式(Visitor)访问者模式(Visitor)意图:表示一个...
命令模式(Command)命令模式(Command)[Action/Transactio...
生成器模式(Builder)生成器模式(Builder)意图:将一个对...