有没有一种方法可以模拟茉莉花间谍的功能



我正在使用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');
});
});

参见房地产间谍文档

最新更新