控制器知道关于服务模拟,但单元测试没有(AngularJS,Karma-Jasmine)

时间:2017-05-15 15:44:25

标签: angularjs unit-testing jasmine karma-jasmine

我将单元测试添加到我的AngularJS应用程序中,并遇到了我测试的控制器知道我的模拟(记录正确的模拟对象)的问题,但我的单元测试无法返回模拟价值。我已经被困在这一段了一段时间。

模拟服务

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();
      });

   });

});

1 个答案:

答案 0 :(得分:0)

试试这个:

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();
     });

 });

});

来源:https://docs.angularjs.org/guide/unit-testing

相关问题