繁体   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