Delen via


Procedure: Testautomatisering gebruiken met Azure Fluid Relay

Testen en automatiseren zijn van cruciaal belang voor het behoud van de kwaliteit en levensduur van uw code. Fluid maakt intern gebruik van een reeks eenheids- en integratietests, mogelijk gemaakt door Mocha, Jest, Puppeteer en Webpack.

U kunt tests uitvoeren met behulp van de lokale @fluidframework/azure-local-service of met behulp van een testtenant in de Azure Fluid Relay-service. AzureClient kan worden geconfigureerd om verbinding te maken met zowel een externe service als een lokale service, waarmee u één clienttype kunt gebruiken tussen tests voor live- en lokale service-exemplaren. Het enige verschil is de configuratie die wordt gebruikt om de client te maken.

Automatisering tegen Azure Fluid Relay

Uw automatisering kan op dezelfde manier verbinding maken met een testtenant voor Azure Fluid Relay als een productietenant en heeft alleen de juiste verbindingsconfiguratie nodig. Zie Procedure: Verbinding maken naar een Azure Fluid Relay-service voor meer informatie.

Een aanpasbare testclient maken

Als u een aanpasbare testclient wilt maken, moet u de AzureClient anders configureren, afhankelijk van het servicedoel. De onderstaande functie maakt gebruik van een omgevingsvariabele om dit te bepalen. U kunt de omgevingsvariabele in een testscript instellen om te bepalen welke service is gericht.

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

Uw tests kunnen deze functie aanroepen om een AzureClient-object te maken zonder zich zorgen te maken over de onderliggende service. De Mocha-test hieronder maakt de serviceclient voordat u tests uitvoert en gebruikt deze vervolgens om elke test uit te voeren. Er is één test die gebruikmaakt van de serviceclient om een container te maken die wordt doorgegeven zolang er geen fouten optreden.

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

Tests uitvoeren

U kunt de volgende npm-scripts toevoegen in de package.json van uw project om tests uit te voeren:

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

Als u de afhankelijkheden wilt installeren die vereist zijn voor de bovenstaande scripts, kunt u de volgende opdracht gebruiken:

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

Het test:local script maakt gebruik van de start-server-and-testbibliotheek om de lokale server te starten, wacht tot poort 7070 (de standaardpoort die door de lokale server wordt gebruikt) reageert, voert het testscript uit en beëindigt vervolgens de lokale server.