使用Jasmine在AngularJS中测试服务时,未知提供商
Unknown provider when testing service in AngularJS with Jasmine
我已经精简了应用程序,所以只有重要的东西在这里。我创建了一个名为databaseSrvc的服务,并尝试在Jasmine单元测试中注入。正如错误页面所示,我已经检查了很多次,看看这是否是拼写错误,所以我很确定不是。
项目结构
.
├── app
│ ├── app.js
│ └── services
│ ├── database.service.js
│ └── database.specs.js
├── lib
│ └── jasmine
│ ├── jasmine-standalone-2.5.2.zip
│ ├── lib
│ ├── MIT.LICENSE
│ ├── spec
│ ├── SpecRunner.html
│ └── src
└── specRunner.html
app.js
angular.module("firebaseTestApp", [])
database.service.js
angular.module("firebaseTestApp")
.factory("databaseSrvc", function($firebaseObject) {
var databaseSrvc = {};
databaseSrvc.ref = firebase.database.ref();
databaseSrvc.echo = function(text) {
console.log(test);
}
databaseSrvc.addUser = function(uid, username, email) {
databaseSrvc.ref.child("users").child("uid").set({
username: username,
email: email
});
}
databaseSrvc.removeUser = function(uid, username, email) {
databaseSrvc.ref.child("users").child("uid").removeValue();
}
databaseSrvc.usernameExists = function(username) {
query = databaseSrvc.ref.child("user").orderByChild("username").equalTo(username);
obj = $firebaseObject(query);
return obj.$loaded().then(function() {
if (obj.$value === null) {
return false;
} else {
return true;
}
});
}
return databaseSrvc;
});
数据库.specs.js
评论的部分和后面的部分都不起作用。它总是记录"未定义",并给我上面提到的错误。
describe('databaseSrvc', function() {
beforeEach(module('firebaseTestApp'));
// var databaseSrvc;
// beforeEach(inject(function(_databaseSrvc_) {
// databaseSrvc = _databaseSrvc_;
// }));
//
//
// it('should exist', function() {
// console.log(databaseSrvc);
// expect(databaseSrvc).toBeTruthy();
// });
it('should exist', inject(function(databaseSrvc) {
console.log(databaseSrvc);
expect(databaseSrvc).toBeTruthy();
}));
});
specRunner.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Jasmine Spec Runner v2.5.2</title>
<link rel="shortcut icon" type="image/png" href="lib/jasmine/lib/jasmine-2.5.2/jasmine_favicon.png">
<link rel="stylesheet" href="lib/jasmine/lib/jasmine-2.5.2/jasmine.css">
<script src="lib/jasmine/lib/jasmine-2.5.2/jasmine.js"></script>
<script src="lib/jasmine/lib/jasmine-2.5.2/jasmine-html.js"></script>
<script src="lib/jasmine/lib/jasmine-2.5.2/boot.js"></script>
<!-- include source files here... -->
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.8/angular.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.5.8/angular-mocks.js"></script>
<script src="app/app.js"></script>
<script src="app/services/database.service.js"></script>
<!-- include spec files here... -->
<script src="app/services/database.specs.js"></script>
</head>
<body>
</body>
</html>
describe('databaseSrvc', function() {
beforeEach(module('firebaseTestApp'))
// declaring in outer scope, will be reassigned below
var databaseSrvc = {}
var mockFirebaseObject = function() {
// this looks like the mock you need based on your service code
return {
$loaded: function() {
return {
then: function(cb) { cb() }
}
}
}
}
// provide your mock object as the $firebaseObject
beforeEach(module(function($provide) {
$provide.value('$firebaseObject', mockFirebaseObject)
}))
// inject the real databaseSrvc factory and reassign it
// to the variable in your outer scope, so that you can
// use it in the rest of the specs
beforeEach(inject(function(_databaseSrvc_) {
databaseSrvc = _databaseSrvc_
}))
describe('expectation', function() {
it('should do something', function() {
expect(databaseSrvc)....
})
})
})
您需要在期望可以访问的范围内公开注入的服务。
相关文章:
- 角度模态服务未知提供商
- JsFiddle:未知提供商:$intervalProvider <- $interval
- 工厂和控制器,未知提供商
- 未知提供商:$resourceProvider - AngularJS
- 未知提供商:捆绑后$resourceProvider
- AngularJS + RequireJS.未知提供商:$routeProvider
- 未知提供商AngularJs在添加“时”;.运行”;
- Angular未知提供商错误
- AngularJS错误:未知提供商
- 为什么我得到$injector:unpr(未知提供商)在这个单页应用程序
- 在angularJS中使用angular-cached-resource的未知提供商
- Angularjs、Typescript、Uglify和static $inject:未知提供商
- Angular $injector——为Angular提供的未知提供商's $timeout
- 未知提供商:uniqueFilterProvider,在Angular.js中使用唯一过滤器
- Angularjs、Typescript、Uglify实例化myApp模块失败未知提供商:a
- 错误:[$injector:unpr]未知提供商:ngCsv <- ngCsv <- dynamicDemoContro
- 使用Jasmine在AngularJS中测试服务时,未知提供商
- 在angularJS中创建过滤器时为angular提供的未知提供商
- 获取"错误:[$injector:unpr]未知提供商"错误
- AngularJS错误:[$injector:unpr]未知提供商:$achorScrollProvider <- $a