簡體   English   中英

Jasmine期待間諜被召喚

[英]Jasmine Expected Spy to have been called

這是我用打字稿寫的角度工廠:

export class DataService { 

constructor () {
   this.setYear(2015);
 }
setYear = (year:number) => {
        this._selectedYear =year;
     }
}

這是我的測試文件。

 import {DataService } from ' ./sharedData.Service';
 export function main() {
    describe("DataService", () => {
        let service: DataService;
        beforeEach(function () {
            service = new DataService();
        });

        it("should initialize shared data service", () => {
            spyOn(service, "setYear");
            expect(service).toBeDefined();
            expect(service.setYear).toHaveBeenCalled(2015);
        });
    });
}

當我運行該文件時,測試失敗了

**Expected spy setSelectedCropYear to have been called.
Error: Expected spy setSelectedCropYear to have been called.**

我無法弄清楚出了什么問題。 任何人都可以告訴我測試有什么問題。

問題是你設置間諜太晚了。 當您將間諜安裝到服務上時,它已經被構造並且已經調用了setYear。 但是你顯然無法在構造之前將間諜裝上服務。

解決這個問題的一種方法是監視DataService.prototype.setYear。 您可以確保它由聲明該服務實例的服務實例調用

Dataservice.prototype.setYear.calls.mostRecent().object is service.

修復了此處的問題是更新的測試。

import {DataService } from ' ./sharedData.Service';
 export function main() {
    describe("DataService", () => {
        let service: DataService;
        beforeEach(function () {
            service = new DataService();
        });

        it("should initialize shared data service", () => {
           var spy = spyOn(service, "setYear").and.callThrough();
            expect(service).toBeDefined();
            expect(spy);
            expect(service._selectedYear).toEqual(2015);
        });
    });
}

暫無
暫無

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

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