2015-12-24 5 views
5

と呼ばれていると期待することはtypescriptですで書かれた私の角度の工場である:ここではジャスミンのスパイがここ

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.** 

は私が間違っているものを理解することはできませんよと言って失敗したファイルを実行します。誰かがテストで間違っていることを教えてください。

答えて

0

ここで問題が修正されました。

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); 
     }); 
    }); 
} 
1

問題は、あなたがスパイを設定するのが遅すぎるということです。あなたがスパイを稼動させるときには、スパイはすでに構築されており、setYearが呼ばれています。しかし、あなたは明らかに、スパイが建設される前にスパイを使用することはできません。これを回避する方法の1つは、DataService.prototype.setYearを偵察することです。 Dataservice.prototype.setYear.calls.mostRecent()。オブジェクトがサービスであることをアサーションするサービスインスタンスによって呼び出されたことを確認できます。

関連する問題