单元测试的模拟服务方法



我正在尝试从UserTest类测试GetUserDetailstest用户有数据,但测试总是为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);
}

最新更新