【发布时间】:2014-11-12 17:45:37
【问题描述】:
我有一个方法可以验证调用外部服务的对象:
public void Validate(IValidator<MyType> validator)
{
IMapper<MyType> mapper = new MyTypeMapper();
foreach (var element in this.Elements)
{
ValidationResult result = validator.Validate(myTypeInstance, mapper, new ValidationConfiguration());
if (result.IsValid)
// do something
else
// do something else
}
}
现在在我的单元测试中,我有一组元素。我希望如果一个元素具有给定的 id 号,Validate 方法应该返回另一个带有验证消息的存根:
// arrange
var myAggregate aggregate = ElementsNonValidated.Stub();
var mockedValidator = new Mock<IValidator<MyType>>();
mockedValidator.Setup(a => a.Validate(
It.Is<Mytype>(x => x.Id == Guid.Parse("3F2504E0-4F89-11D3-9A0C-0305E82C3301")),
new Mapper(),
new ValidationConfiguration()
)).Returns<ValidationResult>(x => x = new ValidationResult());
// act
myAggregate.Valida(mockedValidator.Object);
问题是:当单元测试开始并继续直到真正的方法验证仍然返回result=null。为什么?我的模拟有什么问题?
【问题讨论】:
标签: unit-testing mocking moq