如何解决模拟依赖项测试通过但验证方法调用失败
验证方法测试调用失败: .Net Core 3.1,Framework 4.8
public bool IsValidPhoneNumber(string value)
{
return value.Length == 10;
}
完整的测试课程(通过):
public class CustomersviewmodelTest
{
private Customerviewmodel _sut;
private readonly Mock<ICustomerviewmodel> _customerviewmodel;
private readonly Mock<ICustomerRepository> _customerRepository;
private readonly Mock<IMapper> _mapper;
public Customersviewmodeltest()
{
_customerviewmodel = new Mock<ICustomerviewmodel>();
_customerRepository = new Mock<ICustomerRepository>();
_mapper = new Mock<IMapper>();
_sut = new Customerviewmodel(_customerRepository.Object,_mapper.Object);
}
[Fact]
public void PhoneNumbertest()
{
string phoneNumber = "123456789";
_customerviewmodel.Setup(x => x.IsValidPhoneNumber(phoneNumber)).Returns(false);
bool result = _sut.IsValidPhoneNumber(phoneNumber);
Assert.False(result);
}
}
_customerviewmodel.Verify(p => p.IsValidPhoneNumber(phoneNumber),Times.Once);
或者这个:
_customerviewmodel.Verify(x => x.PhoneNumber(It.IsAny<string>()),Times.Once);
解决方法
不要这样做。
您在测试设置中所要做的就是用另一种实现方式替换您要测试的方法。
在您的断言中,您正在验证是否已调用原始实现,因为替换了该实现,这将不会发生。
切勿替换正在测试的东西的实现。模拟依赖项,但不要模拟正在测试的系统。否则,您的测试没有意义。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。