ここでは少し疲れているかもしれませんが、私のタイトルはそれほど正確ではありません。Angular2ユニットテスト+インターフェイスのオブジェクトを作成する
私は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
オブジェクトのリストを返すだと仮定してください。
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);
});
});
}
このユニットテストは思える:私はこのサービスのためのユニットテストを書くことを試みた
export interface DummyData{
Name:string;
IsActive:boolean;
}
:
は今、私は、同じサービス・ファイル内のダミーデータのための構造/インタフェースを持っています私は実際にDummyData
のリストを取得する機能をDummyService
と呼んでいないので、少し面白いです。
私は私のテストを見ることができなかったので、私はいくつかの問題を抱えていたので、私はこれをやっています。私はいくつかの研究を行い、一日を過ごし、最終的にこの構造体が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
のオブジェクトを作成できないのはなぜですか?
助けてください!
たぶん、あなたの 'DummyService'ファイルに' DummyData'ための不足しているインポート。 –
上記のコードから、 'DummyData'はインターフェースでありクラスではないようです。インタフェースはインスタンス化できません。彼らはクラスではないので。 – estus