[英]Angular2 unit test + creating object of an interface
這里很少用盡,這可能就是為什么我的頭銜不那么准確。
我正在為我的DummyService
編寫一個單元測試:
import {Injectable} from '@angular/core';
@Injectable()
export class DummyService {
getAllDataSources():Promise<Array<DummyData>> {
return new Promise<DummyData[]>(resolve =>
setTimeout(()=>resolve([]), 1000) // 1 seconds
);
}
}
請假設從getAllDataSources
返回DummyData
對象列表。
現在,我在同一個服務文件中有一個虛擬數據的結構/接口:
export interface DummyData{
Name:string;
IsActive:boolean;
}
我試着為這項服務編寫單元測試:
import {DummyService, DummyData} from './dummy.service';
import {
beforeEachProviders
} from '@angular/core/testing';
import {provide} from '@angular/core';
export function main() {
describe('dummy.service', () => {
let dsService:DummyService;
it('should fetch data', ()=> {
dummyData: DummyData = new DummyData(); // >>>> culprit...
expect(1).toEqual(1);
});
});
}
這個單元測試看起來很有趣,因為我真的沒有調用DummyService
的函數來獲取DummyData
的列表。
我這樣做是因為我遇到了一些問題,因此我無法看到我的測試。 我做了一些研究,花了一整天后終於發現這個結構DummyData
是CULPRIT。 當我在單元測試( 在上面的代碼中 )嘗試創建它的對象時,我向自己證明了這一點,並且我得到以下錯誤:
FAILED TESTS:
dummy.service
✖ should fetch data
PhantomJS 2.1.1 (Linux 0.0.0)
Chrome 50.0.2661 (Linux 0.0.0)
ReferenceError: **DummyData is not defined**
at eval (/home/aodev/WebstormProjects/Data Federation App/data-mapping-app/dist/dev/app/shared/datasource.service.spec.js:8:28)
at Object.eval (/home/aodev/WebstormProjects/Data Federation App/data-mapping-app/node_modules/@angular/core/testing/testing.js:80:25)
所以,有人可以告訴我,我做錯了什么? 為什么我不能在單元測試中創建DummyData
的對象?
請幫忙!
TypeScript接口僅在編譯期間存在,運行時對接口一無所知。
這是您創建實現接口的實例的方法:
interface itest
{
success:boolean;
}
let a:itest = {success: true}; //compiler checks that object matches interface itest
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.