[英]Mocking service method for unit test
我正在尝试从 UserTest class 测试GetUserDetails
。 test
用户有数据,但测试总是为getUser
返回 null。 我是否正确编写了测试? 任何建议如何在这里以正确的方式使用服务方法
[TestClass]
public class UserTest
{
IUserService _userService;
[TestInitialize]
public void Setup()
{
_userService = new Mock<IUserService>().Object;
}
[TestMethod]
public void getUserInfo()
{
var getUser = _userService.GetUserDetails("test"); //it's not null, user has data
Assert.IsNotNull(getUser); //always null
}
}
如果您正在测试GetUserDetails
,则不应模拟它所属的服务。
您的测试应该更像这样:
[TestMethod]
public void TestGetUser()
{
var mockLogger = new Mock<ILogger>(MockBehaviour.Strict);
var mockRepo = new Mock<IMyRepo>(MockBehaviour.Strict);
var beingTested = new UsersService(
logger: mockLogger.Object
userRepo: mockRepo.Object,
...);
mockRepo.Setup( r => r.GetUserFromDb("test")).Returns( new UserDetails(...));
var getUser = beingTested.GetUserDetails("test");
Assert.IsNotNull(getUser);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.