我正在使用jasmine创建一个spy对象,并返回一个对象,我可以从我返回的对象中模拟函数吗?
例如:
let mockService = jasmine.createSpyObj(['fun']);
mockService.fun.and.returnValue({value: 1});
我试图在这个例子中模拟get函数:
let x = service.fun();
x.get();
只需使用jasmine.createSpyObj()
方法为service.fun()
的返回值创建spy-obj。
describe('70304592', () => {
it('should pass', () => {
const funSpy = jasmine.createSpyObj(['get']);
funSpy.get.and.returnValue('1');
let serviceSpy = jasmine.createSpyObj(['fun']);
serviceSpy.fun.and.returnValue(funSpy);
const x = serviceSpy.fun();
expect(x.get()).toBe('1');
});
});
更新:如果对象有属性和方法,您可以创建如下间谍obj:
describe('70304592', () => {
it('should pass', () => {
const funSpy = jasmine.createSpyObj('fun', {}, { get: jasmine.createSpy(), value: 'please upvote xD' });
funSpy.get.and.returnValue('1');
let serviceSpy = jasmine.createSpyObj(['fun']);
serviceSpy.fun.and.returnValue(funSpy);
const x = serviceSpy.fun();
expect(x.get()).toBe('1');
expect(x.value).toBe('please upvote xD');
});
});
参见房地产间谍文档