簡體   English   中英

AngularJS控制器單元測試 - 注入服務

[英]AngularJS controller unit tests - injecting services

一個關於AngularJS單元測試的希望簡單的問題。 我有一個使用簡單服務的控制器(改編自angular-seed項目)

services.js:

angular.module('myApp.services', []).value('version', '0.1');

controllers.js:

function MyCtrl1($s, version) {
  $s.version = version;
}
MyCtrl1.$inject = ["$scope","version"];

這適用於我的應用程序。 但是,我在單元測試框架工作中創建控制器時遇到問題。 我無法想象我們如何注入'版本'服務(或創建實例)並將其傳遞給$ controller()工廠 - 我認為這就是我想要做的事情?! 這是裸骨規格:

controllerSpec.js

beforeEach(inject(function($rootScope, $controller) {
  scope = $rootScope.$new();
  // how about version service?
  ctrl = $controller(MyCtrl1, {$scope: scope, /* version: <where from?> */});
}));

it('Version should be 0.1 ...', function() {
    expect(scope.version).toBe('0.1');
});

運行測試工具會產生: > test.sh

...失敗(3.00毫秒):錯誤:錯誤:未知提供者:versionProvider < - 版本錯誤:未知提供者:versionProvider < - 版本

我用$ injector / $ provider和module()嘗試過各種各樣的東西,但無濟於事。 我確定答案很簡單,但我看不出來。

只需將beforeEach(module('myApp.services'))到您的describe塊中。 這將使用“版本”服務將服務模塊加載到測試注入器中,這將使其可用於您的測試。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM