使用 Azure DocDB 为单元测试创建 ResourceResponse 对象
Creating ResourceResponse objects for unit tests with Azure DocDB
我正在使用 Microsoft Fakes 单元测试框架来测试一些对 DocumentDB 数据库进行查询的方法。
DocumentClient
class 有几种查询 DocDB 的方法(例如 CreateDocumentAsync()
),其中 return 一个 ResourceResponse<Document>
对象包裹在一个Task<T>
.
我想填充CreateDocumentAsync()
for unit testing purposes, however the return type, ResourceResponse<T>
, doesn't appear to have a public constructor, despite mention of one in 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);
}
}
如何在填充方法中为 return 创建自定义 ResrouceResponse<Document>
对象?
如评论中所述。 v1.10 的 SDK 支持 ResourceResponse 构造函数将无参数。项目解决方案中的 packages.config 应该显示项目正在使用的 DocumentDB SDK 的版本:
我正在使用 Microsoft Fakes 单元测试框架来测试一些对 DocumentDB 数据库进行查询的方法。
DocumentClient
class 有几种查询 DocDB 的方法(例如 CreateDocumentAsync()
),其中 return 一个 ResourceResponse<Document>
对象包裹在一个Task<T>
.
我想填充CreateDocumentAsync()
for unit testing purposes, however the return type, ResourceResponse<T>
, doesn't appear to have a public constructor, despite mention of one in 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);
}
}
如何在填充方法中为 return 创建自定义 ResrouceResponse<Document>
对象?
如评论中所述。 v1.10 的 SDK 支持 ResourceResponse 构造函数将无参数。项目解决方案中的 packages.config 应该显示项目正在使用的 DocumentDB SDK 的版本: