簡體   English   中英

Mocking 單元測試服務方法

[英]Mocking service method for unit test

我正在嘗試從 UserTest class 測試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);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM