Postupy: Použití automatizace testů se službou Azure Fluid Relay

Testování a automatizace jsou zásadní pro zachování kvality a dlouhověkosti kódu. Fluid interně používá řadu testů jednotek a integrace, které využívají Mocha, Jest, Puppeteer a Webpack.

Testy můžete spouštět pomocí místní služby @fluidframework/azure-local-service nebo pomocí testovacího tenanta ve službě Azure Fluid Relay. AzureClient je možné nakonfigurovat tak, aby se připojil ke vzdálené službě i k místní službě, což umožňuje použít jeden typ klienta mezi testy živých a místních instancí služby. Jediným rozdílem je konfigurace použitá k vytvoření klienta.

Automatizace pro Azure Fluid Relay

Vaše automatizace se může připojit k testovacímu tenantovi pro Azure Fluid Relay stejným způsobem jako produkční tenant a potřebuje pouze odpovídající konfiguraci připojení. Další podrobnosti najdete v tématu Postupy: Připojení do služby Azure Fluid Relay.

Vytvoření přizpůsobitelného testovacího klienta

Pokud chcete vytvořit přizpůsobitelného testovacího klienta, musíte azureClient nakonfigurovat odlišně v závislosti na cíli služby. Následující funkce k určení používá proměnnou prostředí. Proměnnou prostředí můžete nastavit v testovacím skriptu tak, aby řídila, na kterou službu cílí.

function createAzureClient(): AzureClient {
    const useAzure = process.env.FLUID_CLIENT === "azure";
    const tenantKey = useAzure ? process.env.FLUID_TENANTKEY as string : "";
    const user = { id: "userId", name: "Test User" };

    const connectionConfig = useAzure ? {
        type: "remote",
        tenantId: "myTenantId",
        tokenProvider: new InsecureTokenProvider(tenantKey, user),
        endpoint: "https://myServiceEndpointUrl",
    } : {
        type: "local",
        tokenProvider: new InsecureTokenProvider("", user),
        endpoint: "http://localhost:7070",
    };
    const clientProps = {
        connection: config,
    };

    return new AzureClient(clientProps);
}

Testy můžou volat tuto funkci a vytvořit objekt AzureClient, aniž by se to týká samotné základní služby. Níže uvedený test Mocha vytvoří klienta služby před spuštěním testů a pak ho použije ke spuštění každého testu. Existuje jeden test, který pomocí klienta služby vytvoří kontejner, který projde tak dlouho, dokud se nevyvolají žádné chyby.

describe("ClientTest", () => {
    const client = createAzureClient();
    let documentId: string;

    it("can create Azure container successfully", async () => {
        const schema: ContainerSchema = {
            initialObjects: {
                customMap: SharedMap
            },
        };
        documentId = await container.attach();
        const { container, services } = await azureClient.createContainer(schema);
    });
});

Spouštění testů

Ke spuštění testů můžete do souboru package.json projektu přidat následující skripty npm:

"scripts": {
    "start:local": "npx @fluidframework/azure-local-service@latest > local-service.log 2>&1",
    "test:mocha": "mocha",
    "test:azure": "cross-env process.env.FLUID_CLIENT='\"azure\"' && npm run test:mocha",
    "test:local": "start-server-and-test start:local 7070 test:mocha"
}

Pokud chcete nainstalovat závislosti vyžadované výše uvedenými skripty, můžete použít následující příkaz:

npm install cross-env start-server-and-test mocha

Skript test:local ke spuštění místního serveru používá knihovnu start-server-and-test , počkejte na odpověď portu 7070 (výchozí port používaný místním serverem), spusťte testovací skript a ukončete místní server.