📅  最后修改于: 2023-12-03 15:06:52.241000             🧑  作者: Mango
在Angular 2中,我们可以使用Jasmine来测试组件的逻辑,而为了测试组件中的服务是否被调用,我们需要使用Jasmine的createSpyObject
函数来创建一个茉莉间谍对象。茉莉间谍对象是一个模拟对象,它可以模拟某个对象的行为,并且在测试中我们可以拿到该对象的返回值。
createSpyObject
函数let serviceSpy = jasmine.createSpyObj('MyService', ['getData']); // 创建一个茉莉间谍对象
serviceSpy.getData.and.returnValue('test'); // 在茉莉间谍对象上模拟getData方法,并且其返回值为'test'
在上面的代码中,我们首先使用createSpyObj
函数来创建一个名为MyService
的茉莉间谍对象,并且该茉莉间谍对象有一个叫做getData
的方法。接着,我们可以使用and.returnValue
方法来模拟在调用getData
方法时其返回值为'test'
。
在测试用例中,我们可以通过拿到该茉莉间谍对象并调用其方法来获取其返回值。例如:
let serviceSpy = jasmine.createSpyObj('MyService', ['getData']); // 创建一个茉莉间谍对象
serviceSpy.getData.and.returnValue('test'); // 在茉莉间谍对象上模拟getData方法,并且其返回值为'test'
// 在测试用例中调用该茉莉间谍对象的方法,并获取其返回值
expect(component.getData()).toEqual('test');
expect(serviceSpy.getData.calls.count()).toBe(1);
在上面的代码中,我们首先创建了一个名为MyService
的茉莉间谍对象,并模拟其getData
方法的返回值为'test'
。接着,在测试用例中我们调用了一个名为component.getData()
的方法,并通过expect
来断言其返回值是否等于'test'
。
我们还可以使用calls.count()
方法来获取该方法在被调用时的次数,以确保该方法的调用次数是否正确。
通过使用createSpyObject
函数来创建茉莉间谍对象,我们可以非常方便地测试组件中的服务是否被调用,并且可以获取该服务的返回值。在测试用例中,我们可以通过拿到该茉莉间谍对象来断言其被调用的次数以及其返回值。