[英]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.