2015-12-24 22 views
5

benim açısal fabrika daktilo ile yazılmış denilen edilmiş:Yasemin Beklenen Casus İşte

export class DataService { 

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

İşte benim test dosyasıdır.

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

Ben dosyayı

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

Ben sorunun ne anlamaya muktedir değilim diyerek başarısız testi çalıştırdığınızda. Lütfen bana testin nesi olduğunu söyler misiniz?

cevap

0

Buradaki sorun, güncellenmiş Testtir.

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

Sorun, casusu çok geç kuruyor olmanızdır. Casuyu servise bağladığınız zaman, çoktan inşa edildi ve setYear çağrıldı. Ama açıkçası casusun inşa edilmeden önce hizmete monte edilemez. Bunun bir yolu DataService.prototype.setYear'da casusluk yapmaktır. Dataservice.prototype.setYear.calls.mostRecent(). Nesnesinin hizmet olduğunu iddia eden servis örneği tarafından çağrıldığından emin olabilirsiniz.