【发布时间】:2019-10-02 12:31:47
【问题描述】:
public class UserService
{
IUserRepo userRepo;
UserService(IUserRepo repo)
{
userRepo = repo;
}
void AddUser(JsonData data)
{
User user = new User()
{
Name = data.name,
Number = data.Number
};
userRepo.Insert(user);
int id = user.id;
}
}
id 在调试单元测试用例时为 0,但当它是正确调用时,它返回正确的主键,即 1、2、3 等。
模拟
class TestCases
{
Mock<IUserRepo> mockUserRepo = new Mock<IUserRepo>();
[Test]
public void test1()
{
//Arrange
JsonData obj = new JsonData()
{
Name = "Jane",
Number = "0563722992"
}
User dumpUser= new User()
{
Name = "Def",
Number = "8111"
};
mockUserRepo
.Setup(x => x.Insert(It.IsAny<User>()))
.Callback(() => dumpUser.Id = 1);
//Act
UserService u = new UserService(mockUserRepo.Object);
u.AddUser(obj);
//Assert
}
}
在调试单元测试时,似乎回调在通过方法Insert() 时无法将id 更改为1。
谁能帮忙解决这个问题?
【问题讨论】:
-
您正在更改 'dumpUser' 的 id,而不是在您的服务中创建的用户。
标签: c# unit-testing mocking nunit moq