在Angular单元测试中,我们可以使用spyOn
方法来侦查一个方法是否被调用,并检查它接收到的参数是否正确。下面是一个示例:
假设我们有一个名为UserService
的服务,其中有一个方法getUser
,它接收一个用户ID作为参数,并返回一个User
对象。我们想要测试这个方法是否正确接收到了正确的用户ID参数。
首先,我们需要在测试文件的开头导入相关的模块和服务:
import { UserService } from './user.service';
import { User } from './user.model';
接下来,我们可以使用spyOn
方法来侦查getUser
方法的调用,并检查它接收到的参数是否正确。我们还可以使用and.returnValue
方法来模拟getUser
方法的返回值。
describe('UserService', () => {
let userService: UserService;
beforeEach(() => {
userService = new UserService();
});
it('should call getUser with correct userID', () => {
const userId = '123';
const expectedUser: User = { id: userId, name: 'John' };
spyOn(userService, 'getUser').and.returnValue(expectedUser);
const user = userService.getUser(userId);
expect(userService.getUser).toHaveBeenCalledWith(userId);
expect(user).toEqual(expectedUser);
});
});
在上面的示例中,我们首先创建了一个UserService
实例。然后,我们使用spyOn
方法来侦查getUser
方法的调用,并使用and.returnValue
方法来模拟getUser
方法的返回值为expectedUser
。接下来,我们调用getUser
方法,并使用expect
断言来检查getUser
方法是否被正确调用,并且返回的user
对象与expectedUser
相等。
这样,我们就可以在Angular单元测试中检查所侦查的方法是否获得了正确的参数。