如何为
创建存根实例import { Observable } from 'rxjs/Observable';
export type Translation = { [key: string]: string }
export type LoaderTranslations = { [key: string]: Translation }
BaseLoader 抽象类:
import { LoaderTranslations } from './dictionary';
export abstract class BaseLoader {
public abstract loadTranslations(items: string[]): Promise<LoaderTranslations>;
}
我的测试:
import { BaseLoader } from './interface/base-loader';
import { LoadedTranslations } from './interface/dictionary';
describe(`test`, () => {
let loaderMock: any,
translations;
beforeEach(() => {
loaderMock = sinon.createStubInstance(BaseLoader);
translations = sinon.createStubInstance(LoadedTranslations);
// Then I want create spy for promise by using this translations stub
});
});
我无法为我的LoaderTranslations
字典创建存根。我收到以下错误:
&#39; LoaderTranslation&#39;仅指类型,但用作值 这里。
P.S。很抱歉有一个愚蠢的问题,但我最近从C#迁移到TypeScript,我很难理解发生了什么。
答案 0 :(得分:1)
TypeScript编译器执行类型擦除,这意味着类型在编译阶段消失。这意味着您不能在运行时代码中使用类型或接口作为参数或值。
要存根某些,你必须有一个运行时可见的 thing 到存根;像一个班级。
简单地说,您可以创建一个符合LoadedTranslations
类型的对象,并直接使用它(因为它是一个存根,而不是一个由Sinon生成的存根) - 或者传入它来创建一个存根。 / p>