Javascript 如何在Angular 2中模拟泛型类
我想模拟的课程有:Javascript 如何在Angular 2中模拟泛型类,javascript,unit-testing,angular,typescript,karma-runner,Javascript,Unit Testing,Angular,Typescript,Karma Runner,我想模拟的课程有: class Class<T>{ ... } @Injectable() Manager() { ... } 怎么了?看来应该行得通。当我删除MyClass的提供行(因为它不是angular Injectable()服务)时,我得到了提供程序错误。如何解决这个问题 使用useValue而不是useClass,并为其分配一个FakeClass的实例,而不是类。这个错误似乎与泛型无关,而是构造函数接受了一个参数,这个参数应该是一个提供程序,而没有提供程序。 clas
class Class<T>{ ... }
@Injectable()
Manager() { ... }
怎么了?看来应该行得通。当我删除MyClass的提供行(因为它不是angular Injectable()服务)时,我得到了提供程序错误。如何解决这个问题 使用
useValue
而不是useClass
,并为其分配一个FakeClass
的实例,而不是类。这个错误似乎与泛型无关,而是构造函数接受了一个参数,这个参数应该是一个提供程序,而没有提供程序。
class FakeClass<T> {
constructor(public optionsForConstructor) {
.. do sth mock some methods etc.
}
class FakeManager {
public something;
constructor() {
public something: any = new FakeManager({
..some options not important here ..
});
}
fdescribe('A test', () => {
let INTERVAL: number = 5000;
beforeEach(() => {
addProviders([
SUT,
{provide: MyClass, useClass: FakeClass<T>},
{provide: Manager, useClass: FakeMapIncidentController},
]);
});
fit('Should test something',
inject([MyClass, Manager], (myClass, manager) => {
let SUT = new SUT(manager); // my SUT constructor needs Manager instance
expect(true).toBe(true);
}));
Cannot resolve all parameters for 'MyClass'(?).
Make sure that all the parameters are decorated with
Inject or have valid type annotations
and that 'MyClass' is decorated with Injectable. in...