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

请假设正在返回getAllDataSourcesDummyData对象列表。

现在,我在同一服务文件中有一个用于虚拟数据的结构/接口:

 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 S功能以获取DummyData的列表。

我之所以这样做,是因为我遇到了一些问题,因此我无法看到我的测试。我做了一些研究,花了整整一天的时间,最后发现这种结构DummyData是罪魁祸首。当我尝试在单元测试中创建它的对象时,我向自己证明了这一点(在上面的代码中),并且得到以下错误:

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

最新更新