我是茉莉和业力的新手.我相信我已经正确设置了环境,并且我能够运行非常基本的单元测试,但是一旦我尝试实例化控制器,我就会收到一个未知的提供程序错误,我不确定如何调试它.我是否需要传递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) 我在一个大型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应该始终优先于它.
任何见解或帮助将不胜感激.