2
當我測試我的AngularJS應用程序時,我一直遇到問題,我嘗試並注入所有依賴項,但它似乎沒有工作,任何幫助是非常感謝:)
這是一個相當大的應用程序,我試圖儘可能打破事情,並測試他們,但我們有一個叫做firebaseUser
的工廠,你可以猜到firebaseUser。我們還有一個稱爲userInstance
的實例,所以每當我嘗試和模擬userInstance時都會收到錯誤。
describe('Dashboard Start Controller', function() {
var scope, ctrl;
beforeEach(function() {
MockFirebase.override();
module('noodleApp.start');
module('noodleApp.noodleFactory');
module('noodleApp.firebaseUser');
module('noodleApp.start');
});
beforeEach(inject(function($rootScope, $controller, $injector) {
scope = $rootScope.$new();
ctrl = $controller('StartController', {$scope: scope});
}));
afterEach(function() {
scope.$destroy();
});
it('should be available', function() {
expect(ctrl).toBeDefined();
});
it('should init with filter being set to all', function() {
expect(scope.filterOn).toBe('all');
});
});
每當我運行這個測試,我得到以下錯誤:Unknown provider: userInstanceProvider <- userInstance <- StartController
在你的代碼示例中,沒有「userInstance」。所以它似乎被加載到另一個文件中。您的測試是否可以訪問包含userInstance工廠的文件?是所有的文件加載?你可能需要像模塊('noodleApp.userInstance');或者可能像scope.userInstance = xyz?只是一個猜測...... :) – timtos
您是否將userInstance工廠的模塊名稱作爲StartController或第一個'beforeEach()'中列出的其他模塊之一的依賴項?該錯誤表明它缺少所有這些(它們必須在其中至少一箇中被引用)。 – HankScorpio
userInstance不是工廠,它是工廠的實例,它是工廠的返回,所以它在技術上不是我可以包含的模塊 – Grant