Angularjs 使用Jasmine&;因果报应
我用茉莉花测试AngularJS工厂 我在测试一个具有依赖性的工厂时遇到困难。我已经包括了我正在测试的工厂的代码和测试代码 问题是我有错误,测试失败了 这就是我看到的错误:Angularjs 使用Jasmine&;因果报应,angularjs,unit-testing,jasmine,Angularjs,Unit Testing,Jasmine,我用茉莉花测试AngularJS工厂 我在测试一个具有依赖性的工厂时遇到困难。我已经包括了我正在测试的工厂的代码和测试代码 问题是我有错误,测试失败了 这就是我看到的错误: Chrome 33.0.1750 (Mac OS X 10.8.5) Testing my Test Service can get an instance of my factory FAILED Error: [$injector:unpr] http://errors.angularjs.org/1.2.8/$
Chrome 33.0.1750 (Mac OS X 10.8.5) Testing my Test Service can get an instance of my factory FAILED
Error: [$injector:unpr] http://errors.angularjs.org/1.2.8/$injector/unpr?p0=TestThisServiceProvider%20%3C-%20TestThisService
at Error (native)
at /Users/.../www/lib/angular/angular.min.js:6:449
at /Users/.../www/lib/angular/angular.min.js:32:125
at Object.c [as get] (/Users/.../www/lib/angular/angular.min.js:30:200)
at /Users/.../www/lib/angular/angular.min.js:32:193
at c (/Users/.../www/lib/angular/angular.min.js:30:200)
at Object.d [as invoke] (/Users/.../www/lib/angular/angular.min.js:30:417)
at workFn (/Users/.../www/lib/angular/angular-mocks.min.js:6:20731)
Error: Declaration Location
at window.inject.angular.mock.inject (/Users/.../www/lib/angular/angular-mocks.min.js:6:20394)
at null.<anonymous> (/Users/.../www/tests/myapp/TestServices/controllers.tests.js:54:43)
at /Users/.../www/tests/myapp/TestServices/controllers.tests.js:1:1
Firefox 27.0.0 (Mac OS X 10.8) Lighting Control Service can get an instance of my factory FAILED
Error: [$injector:unpr] http://errors.angularjs.org/1.2.8/$injector/unpr?p0=TestThisServiceProvider%20%3C-%20TestThisService
F/<@/Users/.../www/lib/angular/angular.min.js:6
$b/l.$injector<@/Users/.../www/lib/angular/angular.min.js:32
c@/Users/.../www/lib/angular/angular.min.js:30
$b/p.$injector<@/Users/.../www/lib/angular/angular.min.js:32
c@/Users/.../www/lib/angular/angular.min.js:30
d@/Users/.../www/lib/angular/angular.min.js:30
workFn@/Users/.../www/lib/angular/angular-mocks.min.js:6
angular.mock.inject@/Users/.../www/lib/angular/angular-mocks.min.js:6
@/Users/.../www/tests/myapp/TestServices/controllers.tests.js:54
@/Users/.../www/tests/myapp/TestServices/controllers.tests.js:1
describe("My Service", function() {
// Load your module.
beforeEach(module('myApp.Module','myApp.ModuleTwo'));
// Setup the mock service in an anonymous module.
beforeEach(module(function ($provide) {
$provide.value('WebSocketSrvc', {
variable: 'value',
get: function() {
return 'test';
},
send: function(request, cb_URI) {
return 'result';
}
// ... more functions included not displayed.
});
}));
it('can get an instance of my factory', inject(function(TestThisService) {
expect(TestThisService).toBeDefined();
}));
});
测试代码:
Chrome 33.0.1750 (Mac OS X 10.8.5) Testing my Test Service can get an instance of my factory FAILED
Error: [$injector:unpr] http://errors.angularjs.org/1.2.8/$injector/unpr?p0=TestThisServiceProvider%20%3C-%20TestThisService
at Error (native)
at /Users/.../www/lib/angular/angular.min.js:6:449
at /Users/.../www/lib/angular/angular.min.js:32:125
at Object.c [as get] (/Users/.../www/lib/angular/angular.min.js:30:200)
at /Users/.../www/lib/angular/angular.min.js:32:193
at c (/Users/.../www/lib/angular/angular.min.js:30:200)
at Object.d [as invoke] (/Users/.../www/lib/angular/angular.min.js:30:417)
at workFn (/Users/.../www/lib/angular/angular-mocks.min.js:6:20731)
Error: Declaration Location
at window.inject.angular.mock.inject (/Users/.../www/lib/angular/angular-mocks.min.js:6:20394)
at null.<anonymous> (/Users/.../www/tests/myapp/TestServices/controllers.tests.js:54:43)
at /Users/.../www/tests/myapp/TestServices/controllers.tests.js:1:1
Firefox 27.0.0 (Mac OS X 10.8) Lighting Control Service can get an instance of my factory FAILED
Error: [$injector:unpr] http://errors.angularjs.org/1.2.8/$injector/unpr?p0=TestThisServiceProvider%20%3C-%20TestThisService
F/<@/Users/.../www/lib/angular/angular.min.js:6
$b/l.$injector<@/Users/.../www/lib/angular/angular.min.js:32
c@/Users/.../www/lib/angular/angular.min.js:30
$b/p.$injector<@/Users/.../www/lib/angular/angular.min.js:32
c@/Users/.../www/lib/angular/angular.min.js:30
d@/Users/.../www/lib/angular/angular.min.js:30
workFn@/Users/.../www/lib/angular/angular-mocks.min.js:6
angular.mock.inject@/Users/.../www/lib/angular/angular-mocks.min.js:6
@/Users/.../www/tests/myapp/TestServices/controllers.tests.js:54
@/Users/.../www/tests/myapp/TestServices/controllers.tests.js:1
describe("My Service", function() {
// Load your module.
beforeEach(module('myApp.Module','myApp.ModuleTwo'));
// Setup the mock service in an anonymous module.
beforeEach(module(function ($provide) {
$provide.value('WebSocketSrvc', {
variable: 'value',
get: function() {
return 'test';
},
send: function(request, cb_URI) {
return 'result';
}
// ... more functions included not displayed.
});
}));
it('can get an instance of my factory', inject(function(TestThisService) {
expect(TestThisService).toBeDefined();
}));
});
我的问题是,我需要做什么才能让我的单元测试成功通过?在您提供的代码中,您有两个拼写错误,但我猜这不是您真正的代码:
- 测试代码,第4行:
应该是:beforeEach(module('MyApp.Module'));
beforeEach(module('myApp.Module'));
- 第13行,您忘记了一个引号:
return'test'代码>
中的$injector
将您的服务注入测试。就在第二个之前(模块(函数(){…});
我认为要注意这些依赖关系(比如您的案例中的ngResource
).我已经修复了错误。你是对的,它们实际上并不在我的实际代码中,只是在我输入到堆栈溢出的代码中出现了一个错误。这并不能解决问题。也许我没有提到的一点是,依赖的代码段位于不同的模块中。我不希望以任何方式测试该依赖关系。我宁愿测试它的模拟“的依赖项。然后您必须在每个模块(模块(myApp.module,myApp.otherModule,…);
之前将其包含在中。$injector.get('spellservicenamercorrect')中。非常感谢您的帮助。”。