Share via


Como usar a automação de teste com o Azure Fluid Relay

Os testes e a automação são essenciais para manter a qualidade e a longevidade do código. Internamente, o Fluid usa uma série de testes de unidade e integração das plataformas Mocha, Jest, Puppeteer e Webpack.

Você pode executar testes usando o local @fluidframework/azure-local-service ou um locatário de teste no Serviço do Azure Fluid Relay. O AzureClient pode ser configurado para se conectar a um serviço remoto e a um serviço local, o que permite que você use um único tipo de cliente entre testes em instâncias de serviço locais e ativas. A única diferença é a configuração utilizada para criar o cliente.

Automação em relação ao Azure Fluid Relay

Sua automação pode se conectar a um locatário de teste no Azure Fluid Relay da mesma maneira que um locatário de produção, e precisa apenas de uma configuração de conexão apropriada. Confira Como conectar um serviço do Azure Fluid Relay para obter mais detalhes.

Criar um cliente de teste adaptável

Para criar um cliente de teste adaptável, você precisa configurar o AzureClient de maneira diferente, dependendo do destino do serviço. A função abaixo usa uma variável de ambiente para determinar isso. Você pode definir a variável de ambiente em um script de teste para controlar qual serviço é direcionado.

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

Seus testes podem chamar essa função para criar um objeto AzureClient sem se preocupar com o serviço subjacente. O teste do Mocha abaixo cria o cliente de serviço antes de executar os testes e, em seguida, usa-o para executar cada teste. Há um único teste que usa o cliente de serviço para criar um contêiner, que passa desde que nenhum erro seja lançado.

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

Executando testes

Você pode adicionar os seguintes scripts npm no package.json do projeto para executar testes:

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

Para instalar as dependências exigidas pelos scripts acima, você pode usar o seguinte comando:

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

O script test:local usa a biblioteca start-server-and-test para iniciar o servidor local, aguardar até que a porta 7070 (a porta padrão usada pelo servidor local) responda, executar o script de teste e, em seguida, encerrar o servidor local.