是否可以使用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
});