여기에 거의 다 써 버릴 수 없기 때문에 내 제목이 그렇게 정확하지 않을 수 있습니다.Angular2 unit test + 인터페이스의 객체 생성
나는 나의 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;
}
:
지금, 나는 동일한 서비스 파일에 더미 데이터에 대한 구조/인터페이스를 나는 실제로 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
의 개체를 만들 수없는 이유는 무엇입니까?
도와주세요!
을 어쩌면 당신의'DummyService' 파일에'DummyData'에 대한 누락 된 수입. –
위 코드에서'DummyData'는 클래스가 아니라 인터페이스입니다. 인터페이스를 인스턴스화 할 수 없습니다. 그들은 수업이 아니기 때문에. – estus