Moq在调用方法时验证属性

问题描述:

我正在测试围绕WebClient的包装。我想在调用UploadString的时候检查,QueryString属性被设置为一个特定的值。整个方法完成后,我不需要检查QueryString值。Moq在调用方法时验证属性

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??? 
+0

什么是QueryString属性? –

+0

WebClient。我将为它添加设置 – 1283822

回调

可以使用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);