0
在對Angular Controller進行Jasmine測試時,我發現這兩種方法之間存在差異。不應該有,但有。這就是說,使用調試,我發現在這兩種情況下,正確的模擬項目都會通過,但測試的行爲有所不同。爲什麼這些方法在測試控制器時有所不同
首先:我們在這裏模擬服務項目,然後在創建時使用DI注入到控制器中。
$provide.value('core.data.CompanyService', companyService);
$provide.value('core.list.ListGenerator', listGeneratorFactory);
$provide.value('core.actions.ActionContext', actionContext);
ActivitiesCtrl = $controller('activities.ActivitiesCtrl', {
$scope: scope
});
二: 這裏我們明確指定控制器創建注入的服務項目:
ActivitiesCtrl = $controller('activities.ActivitiesCtrl', {
$scope: scope,
'core.lists.ListGenerator': listGeneratorFactory,
'core.actions.ActionContext': actionContext,
'core.data.CompanyService': companyService
});
定義如何他們的行爲不同的 – Phil
重複,但沒有答案:1)[Angular.js測試控制器:指定依賴通過$提供vs $控制器](http://stackoverflow.com/questions/30776642/angular-js-testing-controllers-specifying-依賴關係 - 通過提供vs控制)2)[AngularJS茉莉服務模擬](http://stackoverflow.com/questions/30510463/angularjs-jasmine-service-mock) –
@Phil我已經重組的應用程序,和使用第一種方法使測試失敗,但第二種方法使測試通過。然而在理論上都是這樣做的。 –