Lokale Entwicklung mit dem Azure Cosmos DB-Emulator
Artikel
Ein häufiger Anwendungsfall für den Emulator besteht darin, als Entwicklungsdatenbank zu dienen, während Sie Ihre Anwendungen erstellen. Die Verwendung des Emulators für die Entwicklung kann Ihnen helfen, die Merkmale des Erstellens und Modellierens von Daten für eine Datenbank wie Azure Cosmos DB zu erlernen, ohne dass Dienstkosten anfallen. Darüber hinaus kann die Verwendung des Emulators als Teil eines Automatisierungsworkflows sicherstellen, dass Sie dieselbe Suite von Integrationstests ausführen können. Sie können sicherstellen, dass dieselben Tests sowohl lokal auf Ihrem Entwicklungscomputer als auch remote in einem Continuous Integration-Auftrag ausgeführt werden.
Pullen Sie das mcr.microsoft.com/cosmosdb/windows/azure-cosmos-emulator Windows-Containerimage aus der Containerregistrierung auf den lokalen Docker-Host.
Pullen Sie das mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator Linux-Containerimage mit dem mongodb-Tag aus der Containerregistrierung auf den lokalen Docker-Host.
Die Docker-Containervariante (Linux oder Windows) des Emulators unterstützt die API für Apache Cassandra, API für Apache Gremlin oder API für Table nicht.
Laden Sie zunächst die neueste Version des Azure Cosmos DB-Emulators auf Ihren lokalen Computer herunter, und installieren Sie sie.
Tipp
Im Artikel Emulator: Versionshinweise sind alle verfügbaren Versionen und die Funktionsupdates in denen einzelnen Versionen aufgeführt.
Die Docker-Containervariante des Emulators unterstützt die API für Apache Cassandra nicht.
Starten Sie die ausführbare Datei (Microsoft.Azure.Cosmos.Emulator.exe) des Emulators unter dem %ProgramFiles%\Azure Cosmos DB Emulator-Pfad. Verwenden Sie die folgenden Parameter, um den Emulator zu konfigurieren:
Beschreibung
EnableCassandraEndpoint
Aktiviert den Endpunkt der API für Apache Cassandra.
Die Docker-Containervariante des Emulators unterstützt die API für Apache Gremlin nicht.
Starten Sie die ausführbare Datei (Microsoft.Azure.Cosmos.Emulator.exe) des Emulators unter dem %ProgramFiles%\Azure Cosmos DB Emulator-Pfad. Verwenden Sie die folgenden Parameter, um den Emulator zu konfigurieren:
Beschreibung
EnableGremlinEndpoint
Aktiviert die API für den Apache Gremlin-Endpunkt.
Die Docker-Containervariante des Emulators unterstützt die API für Table nicht.
Starten Sie die ausführbare Datei (Microsoft.Azure.Cosmos.Emulator.exe) des Emulators unter dem %ProgramFiles%\Azure Cosmos DB Emulator-Pfad. Verwenden Sie die folgenden Parameter, um den Emulator zu konfigurieren:
Navigieren Sie zu https://localhost:8081/_explorer/index.html, um auf den Daten-Explorer zuzugreifen.
Starten Sie den Emulator, indem Sie die Anwendung im Windows-Startmenü auswählen.
Alternativ können Sie die ausführbare Datei (Microsoft.Azure.Cosmos.Emulator.exe) des Emulators am %ProgramFiles%\Azure Cosmos DB Emulator-Pfad starten.
Außerdem können Sie den Emulator über die Befehlszeile starten. Verwenden Sie die folgenden Parameter, um den Emulator zu konfigurieren:
Beschreibung
Port
Portnummer, die für die API für NoSQL verwendet werden soll.
Microsoft.Azure.Cosmos.Emulator.exe /Port=65000
Hinweis
Weitere Informationen zu Befehlszeilenargumenten finden Sie unter Befehlszeilenparameter.
Der Emulator öffnet den Daten-Explorer automatisch mithilfe der URL https://localhost:8081/_explorer/index.html.
Navigieren Sie zu https://localhost:8081/_explorer/index.html, um auf den Daten-Explorer zuzugreifen.
Das Docker (Windows)-Containerimage unterstützt die API für MongoDB nicht.
Starten Sie die ausführbare Datei (Microsoft.Azure.Cosmos.Emulator.exe) des Emulators unter dem %ProgramFiles%\Azure Cosmos DB Emulator-Pfad. Verwenden Sie die folgenden Parameter, um den Emulator zu konfigurieren:
Beschreibung
EnableMongoDbEndpoint
Aktiviert den Endpunkt der API für MongoDB bei der angegebenen MongoDB-Version.
Weitere Informationen zu Befehlszeilenargumenten und MongoDB-Versionen, die vom Emulator unterstützt werden, finden Sie unter Befehlszeilenparameter.
Der Emulator öffnet den Daten-Explorer automatisch mithilfe der URL https://localhost:8081/_explorer/index.html.
Importieren des TLS-/SSL-Zertifikats des Emulators
Importieren Sie das TLS-/SSL Zertifikat des Emulators, um den Emulator mit Ihrem bevorzugten Entwickler-SDK zu verwenden, ohne TLS/SSL auf dem Client zu deaktivieren.
Die Docker-Containervariante (Linux oder Windows) des Emulators unterstützt die API für Apache Cassandra, API für Apache Gremlin oder API für Table nicht.
Die lokale Windows-Installation des Emulators importiert automatisch die TLS/SSL-Zertifikate. Weitere Schritte sind nicht erforderlich.
Das Zertifikat für den Emulator ist unter dem Pfad _explorer/emulator.pem des laufenden Containers verfügbar. Verwenden Sie curl, um das Zertifikat aus dem laufenden Container auf Ihren lokalen Computer herunterzuladen.
Rufen Sie das Zertifikat aus dem Container, der gerade ausgeführt wird, ab.
Möglicherweise müssen Sie den Host (oder die IP-Adresse) und die Portnummer ändern, wenn Sie diese Werte zuvor geändert haben.
Installieren Sie das Zertifikat gemäß dem Prozess, der normalerweise für Ihr Betriebssystem verwendet wird. Unter Linux würden Sie das Zertifikat beispielsweise in den /usr/local/share/ca-certificates/-Pfad kopieren.
Für Linux-Systeme generieren Sie das Zertifikatpaket mithilfe des entsprechenden Befehls für Ihre Linux-Distribution neu.
Verwenden Sie für Debian-basierte Linux-Systeme (z. B. Ubuntu) Folgendes:
sudo update-ca-certificates
Verwenden Sie für Red Hat-basierte Linux-Systeme (z. B. CentOS, Fedora) Folgendes:
sudo update-ca-trust
Ausführlichere Anweisungen finden Sie in der Dokumentation zu Ihrem Linux-Betriebssystem.
Das Zertifikat für den Emulator ist im Ordner C:\CosmosDB.Emulator\bind-mount des laufenden Containers verfügbar. Der Ordner enthält auch ein Skript zum automatischen Installieren des Zertifikats.
Verwenden Sie docker cp, um den gesamten Ordner auf Ihren lokalen Computer zu kopieren.
Führen Sie das Skript importcert.ps1 im Ordner aus.
.\bind-mount\importcert.ps1
Die lokale Windows-Installation des Emulators importiert automatisch die TLS/SSL-Zertifikate. Weitere Schritte sind nicht erforderlich.
Herstellen einer Verbindung mit dem Emulator über das SDK
Jedes SDK enthält eine Clientklasse, die normalerweise verwendet wird, um das SDK mit Ihrem Azure Cosmos DB-Konto zu verbinden. Mithilfe der Anmeldeinformationen des Emulators können Sie stattdessen das SDK mit der Emulatorinstanz verbinden.
Erstellen Sie mithilfe von UpsertItemAsync ein neues Element im Container.
var item = new
{
id = "68719518371",
name = "Kiama classic surfboard"
};
await container.UpsertItemAsync(item);
Führen Sie die .NET-Anwendung aus.
dotnet run
Warnung
Wenn sie einen SSL-Fehler erhalten, müssen Sie möglicherweise TLS/SSL für Ihre Anwendung deaktivieren. Dies tritt häufig auf, wenn Sie auf Ihrem lokalen Computer entwickeln, den Azure Cosmos DB-Emulator in einem Container verwenden und das SSL-Zertifikat des Containers nicht importiert haben. Um dies zu beheben, konfigurieren Sie die Optionen des Clients zum Deaktivieren der TLS/SSL-Validierung, bevor Sie den Client erstellen:
Wenn ein SSL-Fehler gemeldet wird, müssen Sie möglicherweise TLS/SSL für Ihre Anwendung deaktivieren. Dies tritt häufig auf, wenn Sie auf Ihrem lokalen Computer entwickeln, den Azure Cosmos DB-Emulator in einem Container verwenden und das SSL-Zertifikat des Containers nicht importiert haben. Um dies zu beheben, konfigurieren Sie die Anwendung so, dass die TLS/SSL-Validierung deaktiviert wird, bevor Sie den Client erstellen:
import urllib3
urllib3.disable_warnings()
Wenn weiterhin SSL-Fehler auftreten, ist es möglich, dass Python die Zertifikate aus einem anderen Zertifikatspeicher abruft. Führen Sie die folgenden Schritte aus, um den Pfad zu ermitteln, in dem Python nach den Zertifikaten sucht:
Wichtig
Wenn Sie eine virtuelle Umgebung (venv) von Python verwenden, stellen Sie sicher, dass sie aktiviert ist, bevor Sie die Befehle ausführen!
Öffnen Sie ein Terminal.
Starten Sie den Python-Interpreter, indem Sie python oder python3 eingeben, je nach Python-Version.
Führen Sie im Python-Interpreter die folgenden Befehle aus:
from requests.utils import DEFAULT_CA_BUNDLE_PATH
print(DEFAULT_CA_BUNDLE_PATH)
Innerhalb einer virtuellen Umgebung kann der Pfad (zumindest in Ubuntu) wie folgt lauten:
Außerhalb einer virtuellen Umgebung kann der Pfad (zumindest in Ubuntu) wie folgt lauten:
/etc/ssl/certs/ca-certificates.crt
Nachdem Sie DEFAULT_CA_BUNDLE_PATH identifiziert haben, öffnen Sie ein neues Terminal, und führen Sie die folgenden Befehle aus, um das Emulatorzertifikat an das Zertifikatpaket anzufügen:
Wichtig
Wenn die Variable DEFAULT_CA_BUNDLE_PATH auf ein Systemverzeichnis verweist, tritt möglicherweise der Fehler „Berechtigung verweigert“ auf. In diesem Fall müssen Sie die Befehle mit erhöhten Rechten (als Stamm) ausführen. Außerdem müssen Sie nach dem Ausführen der bereitgestellten Befehle das Zertifikatpaket aktualisieren und neu generieren.
# Add a new line to the certificate bundle
echo >> /path/to/ca_bundle
# Append the emulator certificate to the certificate bundle
cat /path/to/emulatorcert.crt >> /path/to/ca_bundle
Wenn sie einen SSL-Fehler erhalten, müssen Sie möglicherweise TLS/SSL für Ihre Anwendung deaktivieren. Dies tritt häufig auf, wenn Sie auf Ihrem lokalen Computer entwickeln, den Azure Cosmos DB-Emulator in einem Container verwenden und das SSL-Zertifikat des Containers nicht importiert haben. Um dies zu beheben, konfigurieren Sie die Anwendung so, dass die TLS/SSL-Validierung deaktiviert wird, bevor Sie den Client erstellen:
Löschen Sie alle vorhandenen Inhalte in der Datei.
Fügen Sie einen using-Block für den MongoDB.Driver-Namespace hinzu.
using MongoDB.Driver;
Erstellen Sie unter Verwendung der Anmeldeinformationen des Emulators eine neue Instanz von MongoClient.
var client = new MongoClient(
"mongodb://localhost:C2y6yDjf5%2FR%2Bob0N8A7Cgv30VRDJIWEHLM%2B4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw%2FJw%3D%3D@localhost:10255/admin?ssl=true&retrywrites=false"
);
db = client["cosmicworks"]
if "cosmicworks" not in client.list_database_names():
db.command(
{
"customAction": "CreateDatabase",
"offerThroughput": 400,
}
)
collection = db["products"]
if "products" not in db.list_collection_names():
db.command({"customAction": "CreateCollection", "collection": "products"})
Erstellen Sie mithilfe von update_one ein neues Element im Container.
Verwenden Sie den MongoDB Node.js-Treiber, um eine Verbindung mit dem Emulator über eine Node.js/JavaScript-Anwendung herzustellen.
Starten Sie in einem leeren Ordner.
Initialisieren Sie ein neues Modul.
npm init es6 --yes
Installieren Sie das mongodb-Paket über den Node-Paket-Manager.
npm install --save mongodb
Erstellen Sie die Datei app.js.
Importieren Sie den MongoClient-Typ aus dem mongodb-Modul.
import { MongoClient } from 'mongodb'
Verwenden Sie MongoClient, um eine neue Clientinstanz mit den Anmeldeinformationen des Emulators zu erstellen. Stellen Sie mit connect eine Verbindung mit dem Emulator her.
const client = new MongoClient(
'mongodb://localhost:C2y6yDjf5%2FR%2Bob0N8A7Cgv30VRDJIWEHLM%2B4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw%2FJw%3D%3D@localhost:10255/admin?ssl=true&retrywrites=false'
)
await client.connect()
Verwenden Sie db und collection, um eine Datenbank und einen Container zu erstellen.
Wenn sie einen SSL-Fehler erhalten, müssen Sie möglicherweise TLS/SSL für Ihre Anwendung deaktivieren. Dies tritt häufig auf, wenn Sie auf Ihrem lokalen Computer entwickeln, den Azure Cosmos DB-Emulator in einem Container verwenden und das SSL-Zertifikat des Containers nicht importiert haben. Um dies zu beheben, konfigurieren Sie die Anwendung so, dass die TLS/SSL-Validierung deaktiviert wird, bevor Sie den Client erstellen:
Löschen Sie alle vorhandenen Inhalte in der Datei.
Fügen Sie einen using-Block für den Cassandra-Namespace hinzu.
using Cassandra;
Erstellen Sie unter Verwendung der Anmeldeinformationen des Emulators eine neue Instanz von Cluster. Erstellen Sie mithilfe von Connect eine neue Sitzung.
var options = new SSLOptions(
sslProtocol: System.Security.Authentication.SslProtocols.Tls12,
checkCertificateRevocation: true,
remoteCertValidationCallback: (_, _, _, policyErrors) => policyErrors == System.Net.Security.SslPolicyErrors.None);
using var cluster = Cluster.Builder()
.WithCredentials(
username: "localhost",
password: "C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw=="
)
.WithPort(
port: 10350
)
.AddContactPoint(
address: "localhost"
)
.WithSSL(
sslOptions: options
)
.Build();
using var session = cluster.Connect();
Erstellen Sie eine neue Datenbank und einen Container mithilfe von PrepareAsync und ExecuteAsync.
var createKeyspace = await session.PrepareAsync("CREATE KEYSPACE IF NOT EXISTS cosmicworks WITH replication = {'class':'basicclass', 'replication_factor': 1};");
await session.ExecuteAsync(createKeyspace.Bind());
var createTable = await session.PrepareAsync("CREATE TABLE IF NOT EXISTS cosmicworks.products (id text PRIMARY KEY, name text)");
await session.ExecuteAsync(createTable.Bind());
Erstellen Sie mithilfe von ExecuteAsync ein neues Element in der Tabelle. Verwenden Sie Bind, um dem Element Eigenschaften zuzuweisen.
var item = new
{
id = "68719518371",
name = "Kiama classic surfboard"
};
var createItem = await session.PrepareAsync("INSERT INTO cosmicworks.products (id, name) VALUES (?, ?)");
var createItemStatement = createItem.Bind(item.id, item.name);
await session.ExecuteAsync(createItemStatement);
Führen Sie die .NET-Anwendung aus.
dotnet run
Verwenden Sie den Apache Cassandra Python-Treiber, um eine Verbindung mit dem Emulator über eine Python-Anwendung herzustellen.
Starten Sie in einem leeren Ordner.
Importieren Sie das cassandra-driver-Paket aus dem Python-Paketindex.
pip install cassandra-driver
Erstellen Sie die Datei app.py.
Importieren Sie PROTOCOL_TLS_CLIENT, SSLContext und CERT_NONE aus dem Modul ssl. Importieren Sie dann Cluster aus dem Modul cassandra.cluster. Importieren Sie schließlich PlainTextAuthProvider aus dem Modul cassandra.auth.
from ssl import PROTOCOL_TLS_CLIENT, SSLContext, CERT_NONE
from cassandra.cluster import Cluster
from cassandra.auth import PlainTextAuthProvider
Erstellen Sie mithilfe von SSLContext eine neue TLS/SSL-Kontextvariable. Konfigurieren Sie den Kontext so, dass das selbstsignierte Zertifikat des Emulators nicht überprüft wird.
Erstellen Sie einen neuen Keyspace und eine neue Tabelle mit session.execute.
session.execute(
"CREATE KEYSPACE IF NOT EXISTS cosmicworks WITH replication = {'class':'ba"
"sicclass', 'replication_factor': 1};"
)
session.execute(
"CREATE TABLE IF NOT EXISTS cosmicworks.products (id text PRIMARY KEY, nam"
"e text)"
)
Erstellen Sie mithilfe von session.execute ein neues Element in der Tabelle.
Installieren Sie das cassandra-driver-Paket über den Node-Paket-Manager.
npm install --save cassandra-driver
Erstellen Sie die Datei app.js.
Importieren Sie den Client-Typ und den auth-Namespace aus dem cassandra-driver-Modul.
import { Client, auth } from 'cassandra-driver'
Verwenden Sie PlainTextAuthProvider, um ein neues Objekt für die Anmeldeinformationen des Emulators zu erstellen. Verwenden Sie Client, um mithilfe der Anmeldeinformationen eine Verbindung mit dem Emulator herzustellen.
const credentials = new auth.PlainTextAuthProvider(
'localhost',
'C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw=='
)
const client = new Client({
contactPoints: [
'localhost:10350'
],
authProvider: credentials,
localDataCenter: 'South Central US'
})
Verwenden Sie execute, um einen Befehl serverseitig auszuführen, um einen Keyspace und eine Tabelle zu erstellen.
await client.execute(
'CREATE KEYSPACE IF NOT EXISTS cosmicworks WITH replication = {\'class\':\'basicclass\', \'replication_factor\': 1};'
)
await client.execute(
'CREATE TABLE IF NOT EXISTS cosmicworks.products (id text PRIMARY KEY, name text)'
)
Verwenden Sie execute erneut, um ein neues Element mit Parametern zu erstellen.
Wenn sie einen SSL-Fehler erhalten, müssen Sie möglicherweise TLS/SSL für Ihre Anwendung deaktivieren. Dies tritt häufig auf, wenn Sie auf Ihrem lokalen Computer entwickeln, den Azure Cosmos DB-Emulator in einem Container verwenden und das SSL-Zertifikat des Containers nicht importiert haben. Um dies zu beheben, konfigurieren Sie den Client so, dass die TLS/SSL-Validierung deaktiviert wird:
Vor dem Start erfordert die API für Apache Gremlin, dass Sie Ihre Ressourcen im Emulator erstellen. Erstellen Sie eine Datenbank namens db1 und einen Container mit dem Namen coll1. Die Durchsatzeinstellungen sind für diese Anleitung irrelevant und können so niedrig festgelegt werden, wie Sie möchten.
Erstellen Sie unter Verwendung der Anmeldeinformationen des Emulators eine neue Instanz von GremlinServer und GremlinClient.
var server = new GremlinServer(
hostname: "localhost",
port: 8901,
username: "/dbs/db1/colls/coll1",
password: "C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw=="
);
using var client = new GremlinClient(
gremlinServer: server,
messageSerializer: new Gremlin.Net.Structure.IO.GraphSON.GraphSON2MessageSerializer()
);
Installieren Sie das gremlin-Paket über den Node-Paket-Manager.
npm install --save gremlin
Erstellen Sie die Datei app.js.
Importieren Sie das gremlin Modul.
import gremlin from 'gremlin'
Verwenden Sie PlainTextSaslAuthenticator, um ein neues Objekt für die Anmeldeinformationen des Emulators zu erstellen. Verwenden Sie Client, um mithilfe der Anmeldeinformationen eine Verbindung mit dem Emulator herzustellen.
Löschen Sie alle vorhandenen Inhalte in der Datei.
Fügen Sie einen using-Block für den Azure.Data.Tables-Namespace hinzu.
using Azure.Data.Tables;
Erstellen Sie unter Verwendung der Anmeldeinformationen des Emulators eine neue Instanz von TableServiceClient.
var serviceClient = new TableServiceClient(
connectionString: "DefaultEndpointsProtocol=http;AccountName=localhost;AccountKey=C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==;TableEndpoint=http://localhost:8902/;"
);
Verwenden Sie GetTableClient, um eine neue Instanz von TableClient mit dem Namen der Tabelle zu erstellen. Stellen Sie dann mithilfe von CreateIfNotExistsAsync sicher, dass die Tabelle vorhanden ist.
var client = serviceClient.GetTableClient(
tableName: "cosmicworksproducts"
);
await client.CreateIfNotExistsAsync();
Erstellen Sie einen neuen record-Typ für Elemente.
public record Product : Azure.Data.Tables.ITableEntity
{
public required string RowKey { get; set; }
public required string PartitionKey { get; set; }
public required string Name { get; init; }
public Azure.ETag ETag { get; set; }
public DateTimeOffset? Timestamp { get; set; }
}
Erstellen Sie mithilfe von UpsertEntityAsync und dem Replace-Modus ein neues Element in der Tabelle.
var item = new Product
{
RowKey = "68719518371",
PartitionKey = "Surfboards",
Name = "Kiama classic surfboard",
Timestamp = DateTimeOffset.Now
};
await client.UpsertEntityAsync(
entity: item,
mode: TableUpdateMode.Replace
);
Führen Sie die .NET-Anwendung aus.
dotnet run
Verwenden Sie das Azure Tables Python SDK, um über eine Python-Anwendung eine Verbindung mit dem Emulator herzustellen.
Starten Sie in einem leeren Ordner.
Importieren Sie das azure-data-tables-Paket aus dem Python-Paketindex.
Wenn sie einen SSL-Fehler erhalten, müssen Sie möglicherweise TLS/SSL für Ihre Anwendung deaktivieren. Dies tritt häufig auf, wenn Sie auf Ihrem lokalen Computer entwickeln, den Azure Cosmos DB-Emulator in einem Container verwenden und das SSL-Zertifikat des Containers nicht importiert haben. Um dies zu beheben, konfigurieren Sie den Client so, dass die TLS/SSL-Validierung deaktiviert wird:
Verwenden des Emulators in einem GitHub Actions CI-Workflow
Um eine Continuous Integration-Workload auszuführen, die Ihre Anwendung automatisch validiert, verwenden Sie den Azure Cosmos DB-Emulator mit einer Testsammlung aus dem Framework Ihrer Wahl. Der Azure Cosmos DB-Emulator ist in der windows-latest-Variante der gehosteten Runner von GitHub Action vorinstalliert.
Führen Sie eine Testsammlung mit dem integrierten Testtreiber für .NET und einem Testframework wie MSTest, NUnit oder XUnit aus.
Überprüfen Sie, ob die Komponententestsammlung für Ihre Anwendung wie erwartet funktioniert.
dotnet test
Erstellen Sie einen neuen Workflow in Ihrem GitHub-Repository in einer Datei mit dem Namen .github/workflows/ci.yml.
Fügen Sie Ihrem Workflow einen Auftrag hinzu, um den Azure Cosmos DB-Emulator mithilfe von PowerShell zu starten und Ihre Komponententestsammlung auszuführen.
name: Continuous Integration
on:
push:
branches:
- main
jobs:
unit_tests:
name: Run .NET unit tests
runs-on: windows-latest
steps:
- name: Checkout (GitHub)
uses: actions/checkout@v3
- name: Start Azure Cosmos DB emulator
run: |
Write-Host "Launching Cosmos DB Emulator"
Import-Module "$env:ProgramFiles\Azure Cosmos DB Emulator\PSModules\Microsoft.Azure.CosmosDB.Emulator"
Start-CosmosDbEmulator
- name: Run .NET tests
run: dotnet test
Hinweis
Starten Sie den Emulator über die Befehlszeile mit verschiedenen Argumenten oder PowerShell-Befehlen. Weitere Informationen finden Sie unter Emulator-Befehlszeilenargumente.
Testen Sie Ihre Python-Anwendungs- und Datenbankvorgänge mit pytest.
Überprüfen Sie, ob die Komponententestsammlung für Ihre Anwendung wie erwartet funktioniert.
pip install -U pytest
pytest
Erstellen Sie einen neuen Workflow in Ihrem GitHub-Repository in einer Datei mit dem Namen .github/workflows/ci.yml.
Fügen Sie Ihrem Workflow einen Auftrag hinzu, um den Azure Cosmos DB-Emulator mithilfe von PowerShell zu starten und Ihre Komponententestsammlung auszuführen.
name: Continuous Integration
on:
push:
branches:
- main
jobs:
unit_tests:
name: Run Python unit tests
runs-on: windows-latest
steps:
- name: Checkout (GitHub)
uses: actions/checkout@v3
- name: Start Azure Cosmos DB emulator
run: |
Write-Host "Launching Cosmos DB Emulator"
Import-Module "$env:ProgramFiles\Azure Cosmos DB Emulator\PSModules\Microsoft.Azure.CosmosDB.Emulator"
Start-CosmosDbEmulator
- name: Install test runner
run: pip install pytest
- name: Run Python tests
run: pytest
Hinweis
Starten Sie den Emulator über die Befehlszeile mit verschiedenen Argumenten oder PowerShell-Befehlen. Weitere Informationen finden Sie unter Emulator-Befehlszeilenargumente.
Verwenden Sie mocha, um Ihre Node.js-Anwendung und deren Datenbankänderungen zu testen.
Überprüfen Sie, ob die Komponententestsammlung für Ihre Anwendung wie erwartet funktioniert.
npm install --global mocha
mocha
Erstellen Sie einen neuen Workflow in Ihrem GitHub-Repository in einer Datei mit dem Namen .github/workflows/ci.yml.
Fügen Sie Ihrem Workflow einen Auftrag hinzu, um den Azure Cosmos DB-Emulator mithilfe von PowerShell zu starten und Ihre Komponententestsammlung auszuführen.
name: Continuous Integration
on:
push:
branches:
- main
jobs:
unit_tests:
name: Run Node.js unit tests
runs-on: windows-latest
steps:
- name: Checkout (GitHub)
uses: actions/checkout@v3
- name: Start Azure Cosmos DB emulator
run: |
Write-Host "Launching Cosmos DB Emulator"
Import-Module "$env:ProgramFiles\Azure Cosmos DB Emulator\PSModules\Microsoft.Azure.CosmosDB.Emulator"
Start-CosmosDbEmulator
- name: Install test runner
run: npm install --global mocha
- name: Run Node.js tests
run: mocha
Hinweis
Starten Sie den Emulator über die Befehlszeile mit verschiedenen Argumenten oder PowerShell-Befehlen. Weitere Informationen finden Sie unter Emulator-Befehlszeilenargumente.