我目前有这样的Moq表达
repo.Setup(r => r.GetProjectConfigurationById(It.Is<int>(s => s == response.Id)))
.Returns(response); // return response only if id matches setup one
可以看出,响应是一个拥有自己的Id字段的对象。
现在我有一个List<responses>
,并希望将此表达式转换为行为如此:
Id
Id
正在计算response.Id
,则返回列表中的该元素。null
我怎么能用Moq做到这一点?
答案 0 :(得分:2)
您可以使用It.IsAny<int>()
匹配GetProjectConfigurationById
还有Returns
函数的重载,您可以使用传入GetProjectConfigurationById
的参数指定自定义条件,以按ID查找元素或返回null:
var responses = new List<Response>();
//...
repo.Setup(r => r.GetProjectConfigurationById(It.IsAny<int>()))
.Returns<int>(id => responses.SingleOrDefault(r => r.Id == id));