2016-03-08 142 views
0

我在angularJS中測試一個簡單的服務時遇到了問題,並且在閱讀了一打教程和文章後,我沒有看到我的代碼出了什麼問題,也許您可​​以幫我一下。使用jasmine測試角度服務

我的服務故意很簡單,所以我不必擔心它的代碼。它與下面的代碼的getter/setter服務:

app.service("GetterSetterService", function() { 

    item = ""; 

    return { 
    get: function() { 
     return item; 
    }, 
    set: function(value) { 
     item = value; 
    } 
    } 
}); 

當 「應用程序」 被定義爲:

var app = angular.module('myTestApplication', ["ngMock"]); 

我與茉莉花測試代碼如下:

"use strict"; 

describe("GetterSetterService", function() { 

    var service; 

    beforeEach(inject(function(_GetterSetterService_) { 
    service = _GetterSetterService_; 
    })); 

    it("correctly defines the service", function() { 
    expect(service).not.toBeUndefined(); 
    expect(service).not.toBeNull() 
    }); 

    it("has a default value if no value has been set", function() { 
    expect(service.get()).toBe(""); 
    }); 

    it("correctly sets a value", function() { 
    service.set("newValue"); 
    expect(service.get()).toBe("newValue"); 
    }); 
}); 

但是如果我放了痕跡,它永遠不會傳入「注入」回調,因此不會注入服務,並且無法正常工作。有人有什麼錯誤的線索嗎?我不明白,我越來越絕望。

謝謝你的時間!

回答

0

這是完整的測試嗎?如果是這樣,那麼你錯過了應用程序定義的加載。例如。

beforeEach(module('myTestApplication')); 

而且你不需要注入ngMocks到實際的應用 - 這是隻關心嘲弄了測試,這樣你只會有它在karma.conf.js文件。

因此,基於上述,我認爲您的理解在測試時很難理解。您需要:

  1. 確保必要的文件都包含在karma.conf.js文件
  2. 負載使用beforeEach語法模塊上方
  3. 描述注入你在測試什麼 - 你正在做的正確。
  4. 定義並運行測試
相關問題