Guide pratique : Utiliser l’automatisation des tests avec Relais Azure Fluid

Les tests et l’automatisation sont essentiels pour maintenir la qualité et la longévité de votre code. En interne, Fluid utilise une plage de tests unitaires et d’intégration alimentés par Mocha, Jest, Puppeteer et Webpack.

Vous pouvez exécuter des tests à l’aide de l’outil @fluidframework/azure-local-service local ou à l’aide d’un locataire de test dans le service Relais Azure Fluid. AzureClient peut être configuré pour se connecter à un service distant et à un service local, ce qui vous permet d’utiliser un seul type de client entre les tests sur des instances de service actives et locales. La seule différence entre les deux est la configuration utilisée pour créer le client.

Automatisation sur Relais Azure Fluid

Votre automatisation peut se connecter à un locataire de test pour Relais Azure Fluid de la même façon qu’un locataire de production et n’a besoin que de la configuration de connexion appropriée. Consultez Guide pratique : Se connecter à un service Relais Azure Fluid pour plus de détails.

Création d’un client de test adaptable

Pour créer un client de test adaptable, vous devez configurer AzureClient différemment en fonction de la cible du service. La fonction ci-dessous utilise une variable d’environnement pour déterminer cela. Vous pouvez définir la variable d’environnement dans un script de test pour contrôler quel est le service ciblé.

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

Vos tests peuvent appeler cette fonction pour créer un objet AzureClient sans se soucier du service sous-jacent. Le test Mocha ci-dessous crée le client de service avant d’exécuter des tests, puis l’utilise pour exécuter chaque test. Il existe un seul test qui utilise le client de service pour créer un conteneur qui réussit tant qu’aucune erreur n’est générée.

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

Exécution des tests

Vous pouvez ajouter les scripts npm suivants dans le fichier package.json de votre projet pour exécuter les tests :

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

Pour installer les dépendances requises par les scripts ci-dessus, vous pouvez utiliser la commande suivante :

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

Le script test:local utilise la bibliothèque start-server-and-test pour démarrer le serveur local, patienter jusqu’à ce que le port 7070 (le port par défaut utilisé par le serveur local) réponde, exécuter le script de test, puis arrêter le serveur local.