Pau*_*ake 3 unit-testing angularjs firebase karma-runner angularfire
当我运行我的业力单元脚本并且我无法弄清楚原因时,我收到此错误
Error: [$injector:unpr] Unknown provider: FBURLProvider <- FBURL
Run Code Online (Sandbox Code Playgroud)
这是我的指令代码
'use strict';
angular.module('userMenu', ['firebase'])
.directive('userMenu', function (FBURL, angularFire) {
return {
restrict: 'A',
scope: true ,
link: function postLink(scope, element, attrs) {
/**
* Returns the logged in user information
* @param {string} FBURL
* @param {object} scope
* @returns {promise}
*/
scope.getUserDataFromFirebase = function(FBURL, scope) {
var ref = new Firebase(FBURL + '/users/' + scope.auth.id);
return angularFire(ref, scope, 'user', {})
}
}
};
});
Run Code Online (Sandbox Code Playgroud)
这是我的规范代码
'use strict';
describe('Directive: userMenu', function () {
// load the directive's module
beforeEach(module('userMenu', 'firebase'));
var element,
elementScope,
scope;
beforeEach(inject(function ($rootScope, $compile, _FBURL_, _angularFire_) {
scope = $rootScope.$new();
element = angular.element('<div user-menu></div>');
element = $compile(element)(scope);
elementScope = element.scope();
}));
it('should get user data', inject(function ($compile) {
console.log(scope);
}));
});
Run Code Online (Sandbox Code Playgroud)
说实话,我不熟悉单元测试,所以我可能会遗漏一些非常明显的东西,但任何帮助都会受到赞赏.
如果您的应用程序中的所有内容都正常工作,但您的测试中出现错误,那么您需要将firebase添加到Karma的文件中.找到你的karma.conf.js(在yeoman生成的ionic-angular中将此添加到Gruntfile.js的Karma套件中),并使其类似于以下内容:
karma: {
options: {
...
files: [
...
'https://cdn.firebase.com/v0/firebase.js',
'app/bower_components/angular-fire/angularFire.js',
...
],
...
}
...
}
Run Code Online (Sandbox Code Playgroud)
然后在你的规范中,包括firebase:
beforeEach(module('Simplift', 'firebase'));
Run Code Online (Sandbox Code Playgroud)
每次您需要使用firebase服务时:
describe/it('some test desc ...', inject(function (..., $firebase) {
// now we can use $firebase!!
fireSync = $firebase(new Firebase('https://app_name.firebaseio.com'));
...
}));
Run Code Online (Sandbox Code Playgroud)
让我永远想出这个,并希望它能减轻某人的压力.这对我来说现在很有用,但可能不是最干净的方法(请提供建议!),因为你实际上并没有删除firebase数据,但你可以在你的firebase数据库中添加一个"测试"网址.
| 归档时间: |
|
| 查看次数: |
1435 次 |
| 最近记录: |