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.