Procedimiento: uso de la automatización de pruebas con Azure Fluid Relay

Las pruebas y la automatización resultan fundamentales para mantener la calidad y duración del código. Internamente, Fluid usa una variedad de pruebas unitarias y de integración con tecnología de Mocha, Jest, Puppeteer y Webpack.

Puede ejecutar pruebas mediante el servicio local @fluidframework/azure-local-service o con un inquilino de prueba en el servicio Azure Fluid Relay. AzureClient se puede configurar para que se conecte tanto a un servicio remoto como a un servicio local, lo que le permite utilizar un tipo de cliente único entre pruebas en instancias de servicio activas y locales. La única diferencia es la configuración que se utiliza para crear el cliente.

Automatización en Azure Fluid Relay

La automatización puede conectarse a un inquilino de prueba para Azure Fluid Relay de la misma manera que a un inquilino de producción, y solo necesita la configuración de conexión adecuada. Para más información, consulte el artículo sobre cómo conectarse a un servicio Azure Fluid Relay.

Creación de un cliente de prueba adaptable

A fin de crear un cliente de prueba adaptable, debe configurar AzureClient de manera distinta según el destino del servicio. La función que se muestra a continuación usa una variable de entorno para determinarlo. Puede establecer la variable de entorno en un script de prueba para controlar cuál es el destino del servicio.

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

Las pruebas pueden llamar a esta función para crear un objeto AzureClient sin preocuparse por el servicio subyacente. La prueba Mocha que se indica a continuación crea el cliente de servicio antes de ejecutar las pruebas y, luego, lo usa para ejecutar cada prueba. Hay una sola prueba que usa el cliente del servicio para crear un contenedor que se realizará correctamente siempre y cuando no se produzca ningún error.

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

Ejecutar pruebas

Puede agregar los scripts npm siguientes en el archivo package.json del proyecto para ejecutar pruebas:

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

Si desea instalar las dependencias que requieren los scripts mencionados, puede usar el comando siguiente:

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

El script test:local usa la biblioteca start-server-and-test para iniciar el servidor local, esperar hasta que el puerto 7070 (el puerto predeterminado que utiliza el servidor local) responda, ejecutar el script de prueba y, luego, finalizar el servidor local.