如何在单元测试用例中从 Cosmos Db 模拟器读取数据
How to read data from Cosmos Db emulator in Unit test case
我正在编写单元测试用例,想从 Cosmos Db 模拟器读取数据。我已经做到了这一点,现在需要帮助才能从 Emulator 读取数据。我如何从容器中读取数据,假设我有 Id = "Test"
的数据
public class DataFixtures
{
public DataFixtures()
{
app.CreateDefaultLoggerFactory();
}
}
[CollectionDefinition("Tabulardata collection")]
public class DataCollection : ICollectionFixture<DataFixture>
{
}
[Collection( "Tabulardata collection" )]
public class DataTests
{
private static readonly string CosmosEndpoint = "https://localhost:8081";
private static readonly string EmulatorKey = "C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==";
private static readonly string DatabaseId = "Recordings";
private static readonly string RecordingCollection = "testdata";
string Root = Directory.GetParent( Directory.GetCurrentDirectory() ).Parent.Parent.FullName;
private void ReadConfig()
{
var client = new DocumentClient( new Uri( CosmosEndpoint ), EmulatorKey,
new ConnectionPolicy
{
ConnectionMode = ConnectionMode.Direct,
ConnectionProtocol = Protocol.Tcp
} );
var databaseCreationResult = client.CreateDatabaseAsync( new Database { Id = DatabaseId } ).Result;
var collectionCreationResult = client.CreateDocumentCollectionAsync( UriFactory.CreateDatabaseUri( DatabaseId ),
new DocumentCollection { Id = RecordingCollection } ).Result;
}
试试这个?
private void ReadConfig()
{
var client = new DocumentClient( new Uri( CosmosEndpoint ), EmulatorKey,
new ConnectionPolicy
{
ConnectionMode = ConnectionMode.Direct,
ConnectionProtocol = Protocol.Tcp
} );
var databaseCreationResult = client.CreateDatabaseAsync( new Database { Id = DatabaseId } ).Result;
var collectionCreationResult = client.CreateDocumentCollectionAsync( UriFactory.CreateDatabaseUri( DatabaseId ),
new DocumentCollection { Id = RecordingCollection } ).Result;
var docUri = UriFactory.CreateDocumentUri(DatabaseId, RecordingCollection, "Test");
var response = await client.ReadDocumentAsync(docUri,
new RequestOptions { PartitionKey = new PartitionKey("partitionkey_value") });
Console.WriteLine("Document read by Id {0}", response.Resource);
}
参考this tutorial and this sample code。
这是我的测试结果:
我正在编写单元测试用例,想从 Cosmos Db 模拟器读取数据。我已经做到了这一点,现在需要帮助才能从 Emulator 读取数据。我如何从容器中读取数据,假设我有 Id = "Test"
的数据public class DataFixtures
{
public DataFixtures()
{
app.CreateDefaultLoggerFactory();
}
}
[CollectionDefinition("Tabulardata collection")]
public class DataCollection : ICollectionFixture<DataFixture>
{
}
[Collection( "Tabulardata collection" )]
public class DataTests
{
private static readonly string CosmosEndpoint = "https://localhost:8081";
private static readonly string EmulatorKey = "C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==";
private static readonly string DatabaseId = "Recordings";
private static readonly string RecordingCollection = "testdata";
string Root = Directory.GetParent( Directory.GetCurrentDirectory() ).Parent.Parent.FullName;
private void ReadConfig()
{
var client = new DocumentClient( new Uri( CosmosEndpoint ), EmulatorKey,
new ConnectionPolicy
{
ConnectionMode = ConnectionMode.Direct,
ConnectionProtocol = Protocol.Tcp
} );
var databaseCreationResult = client.CreateDatabaseAsync( new Database { Id = DatabaseId } ).Result;
var collectionCreationResult = client.CreateDocumentCollectionAsync( UriFactory.CreateDatabaseUri( DatabaseId ),
new DocumentCollection { Id = RecordingCollection } ).Result;
}
试试这个?
private void ReadConfig()
{
var client = new DocumentClient( new Uri( CosmosEndpoint ), EmulatorKey,
new ConnectionPolicy
{
ConnectionMode = ConnectionMode.Direct,
ConnectionProtocol = Protocol.Tcp
} );
var databaseCreationResult = client.CreateDatabaseAsync( new Database { Id = DatabaseId } ).Result;
var collectionCreationResult = client.CreateDocumentCollectionAsync( UriFactory.CreateDatabaseUri( DatabaseId ),
new DocumentCollection { Id = RecordingCollection } ).Result;
var docUri = UriFactory.CreateDocumentUri(DatabaseId, RecordingCollection, "Test");
var response = await client.ReadDocumentAsync(docUri,
new RequestOptions { PartitionKey = new PartitionKey("partitionkey_value") });
Console.WriteLine("Document read by Id {0}", response.Resource);
}
参考this tutorial and this sample code。
这是我的测试结果: