Como usar a automação de teste com o Azure Fluid Relay
Testes e automação são cruciais para manter a qualidade e a longevidade do seu código. Internamente, a Fluid usa uma variedade de testes unitários e de integração alimentados por Mocha, Jest, Puppeteer e Webpack.
Você pode executar testes usando o @fluidframework/azure-local-service local ou usando um locatário de teste no serviço Azure Fluid Relay. 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 ao vivo e locais. A única diferença é a configuração usada para criar o cliente.
Automação contra o Azure Fluid Relay
Sua automação pode se conectar a um locatário de teste para o Azure Fluid Relay da mesma forma que um locatário de produção e só precisa da configuração de conexão apropriada. Consulte Como conectar-se a um serviço do Azure Fluid Relay para obter mais detalhes.
Criando um cliente de teste adaptável
Para criar um cliente de teste adaptável, você precisa configurar o AzureClient de forma 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 Mocha abaixo cria o cliente de serviço antes de executar qualquer teste 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);
});
});
Testes em execução
Você pode adicionar os seguintes scripts npm no package.json do seu 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 test:local
script usa a biblioteca start-server-and-test para iniciar o servidor local, esperar 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.