如何用 Jasmine 模拟对象
How to mock an object with Jasmine
在我的 DI 设置中,我有一个单例 class,它有几个我想在测试时禁用的功能。
在其他一些框架/语言中,我会提供一个对象的模拟,其函数的实现是空的。
我想做类似的事情
TestBed.configureTestModule({
imports: […],
providers: [
{ provide: MyClass, useValue: spyAllFunctions(MyClass).and.stub() }
]
})
我已经看过 spyAllFunctions
但我没有完全理解(或者我滥用它),现在我只是自己提供存根,但我想知道是否有比
更好的方法
{
provide: MyClass, deps: [MyClassDependency], useFactory: (dep) => ({
method1: () => { },
method2 () => { }
})
}
谢谢!
enno.void是对的,我觉得你需要createSpyObj
功能。
let mockMyClass: any;
// first string is the name of the class (can be anything), second argument is
// an array of strings of methods you want to be able to mock
mockMyClass = jasmine.createSpyObj('my-class', ['method1', 'method2']);
.....
TestBed.configureTestModule({
imports: […],
providers: [
{ provide: MyClass, useValue: mockMyClass }
]
})
检查此 link。
在我的 DI 设置中,我有一个单例 class,它有几个我想在测试时禁用的功能。
在其他一些框架/语言中,我会提供一个对象的模拟,其函数的实现是空的。
我想做类似的事情
TestBed.configureTestModule({
imports: […],
providers: [
{ provide: MyClass, useValue: spyAllFunctions(MyClass).and.stub() }
]
})
我已经看过 spyAllFunctions
但我没有完全理解(或者我滥用它),现在我只是自己提供存根,但我想知道是否有比
{
provide: MyClass, deps: [MyClassDependency], useFactory: (dep) => ({
method1: () => { },
method2 () => { }
})
}
谢谢!
enno.void是对的,我觉得你需要createSpyObj
功能。
let mockMyClass: any;
// first string is the name of the class (can be anything), second argument is
// an array of strings of methods you want to be able to mock
mockMyClass = jasmine.createSpyObj('my-class', ['method1', 'method2']);
.....
TestBed.configureTestModule({
imports: […],
providers: [
{ provide: MyClass, useValue: mockMyClass }
]
})
检查此 link。