2016-03-01 41 views
-1

我一直在四處尋找在線一angularjs測試,但似乎沒有人真正注入實際使用依賴於使用茉莉和因果報應angularjs單元測試...如何實際加載的依賴與茉莉和因果報應

我認爲測試過程肯定存在分離問題,但我也想知道它如何與當前使用的依賴關係良好集成......所以爲了防止依賴關係與我的組件無法正常工作,我將意識到這一點!

所以,我不知道如何注入實際的依賴關係?到目前爲止,我發現網上的文章都是關於嘲笑一個假的...但我想用實際的。現在,當我進入karma start我得到的Error: [$injector:unpr] Unknown provider: _Provider <- _ <-MyService

我注入服務錯誤的forEach塊這樣 beforeEach(angular.mock.inject(function(_MyService_) { 我如果因爲我沒有使用僞造現金不知道?

任何提示將幫助ia。謝謝!

describe('MyCtrl', function() { 

    //Data Exposure Prep 
    var $controller; 
    var $rootScope; 
    var $scope; 
    var controller; 
    var MyService; 

    dd1 = { 
    itinerary: globalMockData.d1,//I stored globalMockData somewhere else 
    }; 

    beforeEach(angular.mock.module('myapp')); 
    beforeEach(angular.mock.inject(function(_$rootScope_, _$controller_, _$httpBackend_) { 
    $rootScope = _$rootScope_; 
    $controller = _$controller_; 
    $httpBackend = _$httpBackend_; 
    $scope = $rootScope.$new(); 
    controller = $controller('MyCtrl', { $scope: $scope }, dd1); 
    })); 

    //BASIC INFO 
    describe('should receive sth', function() { 
    it('finds sth', function() { 
     expect(controller.answer).toBeDefined(); 
    }); 
    }); 

}); 

`

+0

什麼會幫助我們是您的代碼或plunker的描述。請參閱:http://stackoverflow.com/help/mcve – amanuel2

+0

@Dsafds發佈示例 – Ezeewei

回答

-1

這真的取決於你的Controlller實現。 如果你使用範圍,你可能想測試控制器範圍內的東西,而不是控制器本身。

測試控制器$範圍

function MyController($scope, MyService) { 
$scope.greetUpperCase = function(name) { 
    return MyService.greet(name).toUpperCase(); 
} 
} 

基本上,當你與$範圍的工作,你真的不關心控制器本身,因爲它做它的作用域的一切。

因此,我們將需要:

注入$ rootScope 創建一個新的範圍 它注入到新的控制器 測試$範圍

it('test greetUpperCase()', function() { 
var myScope = $rootScope.$new(); 
$controller('MyController', { 
    $scope: myScope 
}); 
expect(myScope .greetUpperCase('bob')).toBe('HELLO BOB'); 
}); 

https://jsfiddle.net/ronapelbaum/pkhaxmdg/

+0

我有'controllerAs'實現離子在這種情況下。謝謝你帶來了。 :) – Ezeewei

+0

然而,它的服務處理已注入到控制器中......我想知道這是否意味着,我必須執行'this.MyService = MyService'來使服務測試可嘲弄?思想? – Ezeewei

+0

如果你想測試你的控制器,你想嘲笑服務人員。看看我的帖子:https://ronapelbaum.wordpress.com/2016/02/22/angular-controller-test-with-di-use-inject/ – ronapelbaum