控制器知道服务模拟,但单元测试不知道';t(AngularJS,Karma Jasmine)
我将单元测试添加到AngularJS应用程序中,遇到了一个问题,我正在测试的控制器知道我的模拟(记录正确的模拟对象),但我的单元测试无法返回模拟值。这件事我已经讨论了一段时间了 模拟服务控制器知道服务模拟,但单元测试不知道';t(AngularJS,Karma Jasmine),angularjs,unit-testing,jasmine,karma-jasmine,Angularjs,Unit Testing,Jasmine,Karma Jasmine,我将单元测试添加到AngularJS应用程序中,遇到了一个问题,我正在测试的控制器知道我的模拟(记录正确的模拟对象),但我的单元测试无法返回模拟值。这件事我已经讨论了一段时间了 模拟服务 angular.module('mocks.myService', []) .factory('myService', function() { var service = { hi : 'hi' }; return service; }); 控制器
angular.module('mocks.myService', [])
.factory('myService', function() {
var service = {
hi : 'hi'
};
return service;
});
控制器
.controller('MyCtrl', ['myService', function(myService) {
var vm = this;
vm.doThing = function() {
console.log(myService);
// Object{hi:'hi'}
};
}]);
单元测试
describe('myApp.selection module', function() {
var myCtrl, myService;
beforeEach(function() {
myService = module('mocks.myService');
console.log(myService);
// undefined
});
describe('controller', function(){
it('should exist', inject(function($controller) {
myCtrl = $controller('MyCtrl');
expect(myCtrl).toBeDefined();
}));
it ('should do thing', function() {
myCtrl.doThing();
});
});
});
试试这个:
describe('myApp.selection module', function () {
var myCtrl, myService;
beforeEach(module("mocks.myService"));
beforeEach(inject(function (_myService_) {
myService = _myService_;
console.log(myService);
}));
describe('controller', function () {
it('should exist', inject(function ($controller) {
myCtrl = $controller('MyCtrl');
expect(myCtrl).toBeDefined();
}));
it('should do thing', function () {
myCtrl.doThing();
});
});
});
资料来源: