我对如何设置我的Mock对象感到困惑(是的,我确实要严格)。我已经做过其他时间,但这有点不同。首先这是一个web api,我想知道我的Moq上下文是否丢失和/或这个界面有一个ref参数,所以我确定我做错了。
存储库界面:
public interface IStuffRepository
{
...code snip....
Stuff GetStuff(Guid stuffId, ref List<ErrorInfo> errorInfo);
}
我的Moq实施:
[TestMethod]
public void AddValidStuffCorrectResponse()
{
private Mock<IStuffRepository> _stuffRepository = new Mock<IStuffRepository>(MockBehavior.Strict);
var errInfo = new List<ErrorInfo>(); //ref field
_stuffRepository.Setup(x => x.GetStuff(It.IsAny<Guid>(), ref errInfo));
AddStuffController = new AddStuffController(_stuffRepository.Object);
AddStuffController.AddStuff();
.....
}
正在测试的实际代码会引发错误:
public HttpResponseMessage AddStuff()
{
var errorInfo = new List<ErrorInfo>();
...snip...
var stuff = stuffRepository.GetStuff(stuffId, ref errorInfo);
....
}
答案 0 :(得分:1)
好的,看起来Moq不支持Ref parameters right now
上的匹配尽量不要使用参考参数。在您的情况下,当您将错误数据用于错误数据时,异常可能比参考参数更有意义。