相关疑难解决方法(0)

单元测试依赖注入

我是茉莉和业力的新手.我相信我已经正确设置了环境,并且我能够运行非常基本的单元测试,但是一旦我尝试实例化控制器,我就会收到一个未知的提供程序错误,我不确定如何调试它.我是否需要传递stateProvider依赖项?我没有在angular-seed示例中看到这一点.

Bower.json:

{
"name": "starter",
  "description": "A starter project for AngularJS",
  "version": "2.0.0",
  "homepage": "https://starter.com",
  "private": true,
  "dependencies": {
      "angular": "1.2.x",
      "angular-route": "1.2.x",
      "angular-loader": "1.2.x",
      "angular-mocks": "~1.2.15"
  }
}
Run Code Online (Sandbox Code Playgroud)

家庭控制器:

angular.module('home').controller('Home', function($scope, $rootScope, $state) {

    console.log($scope.pageType);

    $rootScope.pageType = 'home';

    /*
     * Takes in a state and transitions the app to that state.
     */
    $scope.goTo = function(value) {
        $state.transitionTo(value);
    }

    /*
     * Handles what happens after clicking log-in
     */
    $scope.loginClicked = function() {
        $state.transitionTo('log-in');
    }
});
Run Code Online (Sandbox Code Playgroud)

测试文件:

'use strict';

/* jasmine …
Run Code Online (Sandbox Code Playgroud)

unit-testing jasmine angularjs karma-runner

12
推荐指数
2
解决办法
2万
查看次数

什么时候我应该在我的Angular JS Unit测试中使用$ provide和Jasmine Spies

我在一个大型Angular应用程序上工作,最初我们通过使用$ provide来模拟服务来完成我们的大量测试.然而,我们现在在我们的测试中有很多Jasmine Spies来存储和监视服务.

spyOn(myService, 'myMethod').andReturn 'myValue'
Run Code Online (Sandbox Code Playgroud)

我们是否真的应该使用$提供此服务,或者是否存在间谍服务是最好的方法?

在Angular Tests中,他们使用间谍来监视Jquery,我将其视为外部服务.

spyOn(jq.prototype, 'on');
Run Code Online (Sandbox Code Playgroud)

$ provide似乎更多地用于内部服务.

  module(function($provide){
    $provide.provider('$exceptionHandler', $ExceptionHandlerProvider);
  });
Run Code Online (Sandbox Code Playgroud)

还有一个Jasmine createSpy函数,但现在我认为$ provide应该始终优先于它.

任何见解或帮助将不胜感激.

javascript unit-testing jasmine angularjs

10
推荐指数
1
解决办法
7342
查看次数