簡體   English   中英

無法在 NUnit Mock 的 SetupSequence 中使用多次返回

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM