Udostępnij za pośrednictwem


Instrukcje: korzystanie z automatyzacji testów w usłudze Azure Fluid Relay

Testowanie i automatyzacja mają kluczowe znaczenie dla utrzymania jakości i długowieczności kodu. Wewnętrznie fluid używa szeregu testów jednostkowych i integracyjnych obsługiwanych przez Mocha, Jest, Puppeteer i webpack.

Testy można uruchamiać przy użyciu lokalnego @fluidframework/azure-local-service lub dzierżawy testowej w usłudze Azure Fluid Relay. Program AzureClient można skonfigurować tak, aby łączył się zarówno z usługą zdalną, jak i z usługą lokalną, co umożliwia używanie pojedynczego typu klienta między testami dla wystąpień usług na żywo i lokalnych. Jedyną różnicą jest konfiguracja używana do tworzenia klienta.

Automatyzacja w usłudze Azure Fluid Relay

Automatyzacja może łączyć się z dzierżawą testową dla usługi Azure Fluid Relay w taki sam sposób jak dzierżawa produkcyjna i wymaga tylko odpowiedniej konfiguracji połączenia. Aby uzyskać więcej informacji, zobacz Instrukcje: nawiązywanie połączenia z usługą Azure Fluid Relay.

Tworzenie dostosowanego klienta testowego

Aby utworzyć klienta testowego z możliwością dostosowania, należy skonfigurować klienta AzureClient w różny sposób w zależności od celu usługi. Poniższa funkcja używa zmiennej środowiskowej, aby to określić. Zmienną środowiskową można ustawić w skryscie testowym, aby kontrolować, która usługa jest docelowa.

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

Testy mogą wywołać tę funkcję, aby utworzyć obiekt AzureClient bez względu na samą usługę bazową. Poniższy test Mocha tworzy klienta usługi przed uruchomieniem testów, a następnie używa go do uruchamiania każdego testu. Istnieje pojedynczy test, który używa klienta usługi do utworzenia kontenera, który przechodzi tak długo, jak nie są zgłaszane żadne błędy.

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

Uruchamianie testów

Aby uruchomić testy, możesz dodać następujące skrypty npm w package.json projektu:

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

Aby zainstalować zależności wymagane przez powyższe skrypty, możesz użyć następującego polecenia:

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

Skrypt test:local używa biblioteki start-server-and-test do uruchomienia serwera lokalnego, poczekaj na port 7070 (domyślny port używany przez serwer lokalny), uruchom skrypt testowy, a następnie zakończ serwer lokalny.