是否可以Jasmine
.spyOn()
仅在某个参数为某个值的情况下使用 , 来模拟方法?基本上,假设我有一个GetUser
方法,我想模拟它,如果它通过username = 'test'
,它将发送一个测试用户,否则为 null。一些测试假代码将是:
spyOn(userService, "getUser('test')").and.returnValue(testUser);
这相当于 C# / Moq 为:
mockUserService.Setup(x => x.getUser("test")).Returns(testuser);
我知道这可以通过使用自定义编码来完成and.callFake
,但这似乎很麻烦。实际有效的测试代码是:
spyOn(userService, "getUser").and.callFake(function (username)
{
if (username == "test")
return testuser;
return null
});