[英]Not able to use multiple returns with SetupSequence of NUnit Mock
我正在編寫單元測試用例,我必須根據所需的參數返回多個響應。 當我嘗試下面的代碼時,它運行良好。
_mockClient.SetupSequence(c => c.HttpGet(It.IsAny<string>(), It.IsAny<Dictionary<string, string>>()))
.Returns(new HttpResponseMessage(HttpStatusCode.OK) { Content = new StringContent(_bucketResponseJson) })
.Returns(new HttpResponseMessage());
但是當我的響應依賴於傳遞的參數時,我將以下代碼與 lambda 表達式一起使用。
_mockClient.SetupSequence(c => c.HttpGet(It.IsAny<string>(), It.IsAny<Dictionary<string, string>>()))
.Returns(((string url, Dictionary<string, string> headers) =>
{
return _objectStoreCache[headers[HeaderValue]] as HttpResponseMessage;
})).Returns(new HttpResponseMessage());
這給了我編譯錯誤:
“無法將 lambda 表達式轉換為類型 'System.Net.Http.HttpResponseMessage',因為它不是委托類型”
您在設置中嘗試執行的操作無法完成,因為ISetupSequentialResult<TResult>
不允許 lambda 表達式,而是將具體值傳遞給Returns
方法。 也沒有允許該功能的擴展方法。
public interface ISetupSequentialResult<TResult> {
//...
// Summary:
// Returns value
ISetupSequentialResult<TResult> Returns(TResult value);
//...
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.