b73*_*b73 7 unit-testing jasmine angularjs karma-runner karma-jasmine
我的Angular 1.3应用程序正在使用angular-translate库.在我的Karma测试中,我试图$translate用我创建的Mock对象来模拟提供者.
调用模拟对象MockTranslate,它属于myMocks模块.我没有MockTranslate在问题中包含来源,因为它与问题无关.
我测试的主题是一个控制器,我可以很容易地$translate使用以下模拟:
module('myMocks');
inject(function($controller, MockTranslate) {
$controller("MyController", {
$translate: MockTranslate.create(translations);
});
});
Run Code Online (Sandbox Code Playgroud)
上面的模拟工作,但我倾向于使用angular.mock.module类似的东西来模拟提供者:
module('myMocks');
module("myModule", function($provide) {
$provide.provider("$translate", function(MockTranslate) {
return MockTranslate.create(translations);
});
});
Run Code Online (Sandbox Code Playgroud)
但是当我运行测试时出现以下错误:
Error: [$injector:modulerr] Failed to instantiate module function ($provide) due to: Error: [$injector:unpr] Unknown provider: MockTranslate
如何使用模拟提供程序angular.mock.module?
sbe*_*lin 20
如果我正确地理解了这个任务,那么这是一个有效的例子:
angular.module('translateApp', [])
.controller('translateCtrl', function ($scope, $translate) {
$scope.translate = function(message) {
return $translate.translate(message);
};
})
.provider({
$translate: function() {
this.$get = function () {
return {
translate: function (msg) {
return 'OriginalTranslate: ' + msg;
}
};
};
}
});
describe('Translate Controller Test', function() {
var mockScope;
var mockTranslate;
beforeEach(module('translateApp', function($provide) {
$provide.provider('MockTranslate', function() {
this.$get = function () {
return {
translate: function (msg) {
return 'MockTranslate: ' + msg;
}
};
}
});
$provide.provider('$translate', function() {
this.$get = function (MockTranslate) {
return {
translate: function (msg) {
return MockTranslate.translate(msg);
}
};
}
});
}));
beforeEach(inject(function($controller, $rootScope, $translate) {
mockScope = $rootScope.$new();
mockTranslate = $translate;
$controller('translateCtrl', {
$scope: mockScope,
$translate: mockTranslate
});
}));
it('Translates messages', function () {
expect(mockScope.translate('cool message')).toEqual('MockTranslate: cool message');
});
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9697 次 |
| 最近记录: |