c# - 调用方法时起订量验证属性

标签 c# unit-testing moq

我正在对 WebClient 的包装器进行单元测试。我想在调用 UploadString 时检查 QueryString 属性是否设置为特定值。整个方法完成后,我不需要检查 QueryString 值。

mockedWebClient.Setup(w=>w.UploadString("url2","POST","bodyyy")).Return("response");
mockedWebClient.Setup(w=>w.QueryString).Return(new NameValueCollection());

testibject.SomeMethod();

// Verify method was called 
mockedWebClient.Verify(w=>w.UploadString("url2","POST","bodyyy");
// Also verify QueryString is set at the time UploadString is called???

最佳答案

回调

使用Setup时,您可以使用Callback方法。例如:

NameValueCollection queryString = new NameValueCollection();

mockedWebClient.Setup(w=>w.QueryString).Return(queryString);

bool isExpected = false;

mockedWebClient
    .Setup(w=>w.UploadString("url2","POST","bodyyy"))
    .Callback(() => isExpected = queryString["SomeKey"] == "SomeValue")
    .Return("response");

testibject.SomeMethod();

Assert.IsTrue(isExpected);

关于c# - 调用方法时起订量验证属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43811395/

相关文章:

c# - 在日期中添加天数但不包括周末

c# - 使用带有类型参数的工厂方法创建带有参数化构造函数的派生类

c# - 模型是否包含字段而不将其添加到数据库?

java - 如何使用 Play Framework 测试电子邮件逻辑

asp.net-mvc - ASP.NET MVC 自定义路由约束、依赖注入(inject)和单元测试

c# - 使用 Linq 获取这些值后访问 ConcurrentDictionary 值是否线程安全

java - 单元测试 "glue"代码或没有任何真正逻辑的代码

unit-testing - Xamarin Studio 上的代码覆盖率

c# - 断言模拟对象构造函数抛出的异常

asp.net - 如何为模型设置 IPrincipal?