2016-11-08 78 views
0

我正在使用Microsoft Fakes單元測試框架來測試一些對DocumentDB數據庫進行查詢的方法。爲使用Azure DocDB進行單元測試創​​建ResourceResponse對象

DocumentClient類有幾種查詢DocDB的方法(如CreateDocumentAsync()),它們返回ResourceResponse<Document>對象包裝在Task<T>中。

我想爲單元測試目的填充CreateDocumentAsync(),但返回類型ResourceResponse<T>似乎沒有公共構造函數,儘管提到了the documentation中的一個。

什麼,我想完成一個非常簡化的版本是在這裏:

[TestMethod] 
public async Task MyTest() { 
    using (ShimsContext.Create()) { 
     // Arrange 
     var docClient = new DocumentClient(new Uri("myUri"), "myKey"); 
     ShimDocumentClient.AllInstances.CreateDocumentAsyncUriObjectRequestOptionsBoolean = 
      (DocumentClient instance, Uri uri, object document, RequestOptions options, bool disableAutomaticGeneration) => 
     { 
      ResourceResponse<Document> response = new ResourceResponse<Document>(); // "error: does not contain a constructor that takes zero arguments" 
      return response ; 
     }; 

     // Act 
     var response = await docClient.CreateDocumentAsync(new Uri("myCollectionUri"), "myDoc"); 

     // Assert 
     Assert.AreEqual(response.StatusCode, HttpStatusCode.OK); 
    } 
} 

我如何創建自定義ResrouceResponse<Document>對象在勻方法返回?

+0

請問您是否確認您是否使用SDK版本1.10?如果沒有,請下載最新的SDK。 – h0n

+0

@ h0n我正在使用v1.10的SDK。你知道有沒有解決這個問題的標準方法? – eigenchris

+2

我使用v1.10進行了測試,並且沒有傳入任何參數就沒有發現新的ResourceResponse類。你可以做的一件事是檢查你的packages.config以確保SDK版本是1.10.0。 h0n

回答

3

正如評論中指出的那樣。 SDK的v1.10支持ResourceResponse構造函數將無參數。項目解決方案中的packages.config應顯示項目使用的DocumentDB SDK的版本:

相關問題