0

我正在编写单元测试用例,并想从 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;            
    
    }
4

1 回答 1

2

试试这个?

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);          
    
    }

请参阅本教程和本示例代码

这是我的测试结果:

在此处输入图像描述

于 2021-05-12T07:32:39.100 回答