Share via


Procedura: Usare l'automazione dei test con Inoltro fluido di Azure

I test e l'automazione sono fondamentali per mantenere la qualità e la longevità del codice. Internamente, Fluid usa una gamma di unit test e di integrazione basati su Mocha, Jest, Puppeteer e Webpack.

È possibile eseguire test usando il @fluidframework locale /azure-local-service o usando un tenant di test nel servizio Inoltro fluido di Azure. AzureClient può essere configurato per la connessione a un servizio remoto e a un servizio locale, che consente di usare un singolo tipo di client tra i test e le istanze del servizio locale. L'unica differenza è la configurazione usata per creare il client.

Automazione con inoltro fluido di Azure

L'automazione può connettersi a un tenant di test per Inoltro fluido di Azure allo stesso modo di un tenant di produzione e richiede solo la configurazione di connessione appropriata. Per altri dettagli, vedere Procedura: Connessione a un servizio di inoltro fluido di Azure.

Creazione di un client di test adattabile

Per creare un client di test adattabile, è necessario configurare AzureClient in modo diverso a seconda della destinazione del servizio. La funzione seguente usa una variabile di ambiente per determinarlo. È possibile impostare la variabile di ambiente in uno script di test per controllare il servizio di destinazione.

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

I test possono chiamare questa funzione per creare un oggetto AzureClient senza preoccuparsi del servizio sottostante. Il test Mocha seguente crea il client del servizio prima di eseguire tutti i test e quindi lo usa per eseguire ogni test. Esiste un singolo test che usa il client del servizio per creare un contenitore che viene superato fino a quando non vengono generati errori.

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

Esecuzione di test

È possibile aggiungere gli script npm seguenti nel file package.json del progetto per eseguire i test:

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

Per installare le dipendenze richieste dagli script precedenti, è possibile usare il comando seguente:

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

Lo test:local script usa la libreria start-server-and-test per avviare il server locale, attendere fino alla porta 7070 (la porta predefinita usata dal server locale) risponde, eseguire lo script di test e quindi terminare il server locale.