Share via


Gör så här: Använda testautomation med Azure Fluid Relay

Testning och automatisering är avgörande för att upprätthålla kodens kvalitet och livslängd. Internt använder Fluid en rad enhets- och integreringstester som drivs av Mocha, Jest, Puppeteer och Webpack.

Du kan köra tester med hjälp av den lokala @fluidframework/azure-local-service eller med hjälp av en testklientorganisation i Azure Fluid Relay-tjänsten. AzureClient kan konfigureras för att ansluta till både en fjärrtjänst och en lokal tjänst, vilket gör att du kan använda en enda klienttyp mellan tester mot live- och lokala tjänstinstanser. Den enda skillnaden är den konfiguration som används för att skapa klienten.

Automatisering mot Azure Fluid Relay

Din automatisering kan ansluta till en testklient för Azure Fluid Relay på samma sätt som en produktionsklientorganisation och behöver bara rätt anslutningskonfiguration. Mer information finns i Så här: Anslut till en Azure Fluid Relay-tjänst.

Skapa en anpassningsbar testklient

För att kunna skapa en anpassningsbar testklient måste du konfigurera AzureClient på olika sätt beroende på tjänstmålet. Funktionen nedan använder en miljövariabel för att fastställa detta. Du kan ange miljövariabeln i ett testskript för att styra vilken tjänst som är må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);
}

Dina tester kan anropa den här funktionen för att skapa ett AzureClient-objekt utan att bekymra sig om den underliggande tjänsten. Mocha-testet nedan skapar tjänstklienten innan du kör några tester och använder den sedan för att köra varje test. Det finns ett enda test som använder tjänstklienten för att skapa en container som klarar sig så länge inga fel utlöses.

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

Köra tester

Du kan lägga till följande npm-skript i projektets package.json för att köra tester:

"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"
}

Om du vill installera de beroenden som krävs av skripten ovan kan du använda följande kommando:

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

Skriptet test:local använder biblioteket start-server-and-test för att starta den lokala servern, vänta tills port 7070 (standardporten som används av den lokala servern) svarar, köra testskriptet och avsluta sedan den lokala servern.