[英]Verify parameter of parameter class in moq setup
context.Setup(x => x.ExecuteQuery(It.IsAny<GetBrowserByNameQuery>())).Returns(value: null);
查询class:
public class GetApplicationByNameQuery : IQuery<Application, Application?>
{
private readonly string _name;
public GetApplicationByNameQuery(string name)
{
_name = name;
}
public Application? Execute(IQueryable<Application> queryable)
{
return queryable.SingleOrDefault(x => x.Name == _name);
}
}
GetBrowserByNameQuery 需要一个字符串,我没有成功测试传递给GetBrowserByNameQuery 的字符串。
以下示例不起作用,因为它是 GetBrowserByNameQuery 的另一个实例
context.Setup(x => x.ExecuteQuery(new GetBrowserByNameQuery>(command.Name))).Returns(value: null);
您可以尝试以下方法:
GetBrowserbyNameQuery resultQuery = null;
context
.Setup(x => x.ExecuteQuery(It.IsAny<GetBrowserByNameQuery>()))
.Returns(value: null)
.Callback<GetBrowserByNameQuery>(query => { resultQuery = query; });
现在在resultQuery
中你有一个 class 的实际实例,它被用作参数。 您可以使用您使用的断言库断言(如果 class 具有Name
的一些公共属性)。 例如对于 FluentAssertions:
resultQuery.Name.Should().Be(command.Name)
如果GetBrowserByNameQuery
不公开Name
,则没有简单的方法来检查它。 无法模拟构造函数,因此您只有以下选择:
GetBrowserByNameQuery
的创建,然后模拟工厂并检查是否使用正确的参数调用工厂方法
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.