操作說明:搭配 Azure 流體轉送使用測試自動化

測試和自動化對於維護程式碼的品質和彈性極其重要。 在內部,流體會使用由 MochaJestPuppeteerWebpack所提供的一系列單元和整合測試。

您可以使用本機 @fluidframework/azure-local-service 或使用 Azure 流體轉送服務中的測試租用戶來執行測試。 AzureClient 可以設定為同時連線到遠端服務和本機服務,這可讓您在即時和本機服務執行個體的測試之間使用單一用戶端類型。 唯一的差異在於用來建立用戶端的設定。

針對 Azure 流體轉送進行自動化

您的自動化可以採取與生產租用戶相同的方式連線到 Azure 流體轉送的測試租用戶,而且只需適當的連線設定。 如需詳細資料,請參閱操作說明:連線到 Azure 流體轉送服務

建立適用的測試用戶端

為了建立適用的測試用戶端,您必須以不同的方式設定 AzureClient,取決於服務目標。 下列函式會使用環境變數來做出此決定。 您可以在測試指令碼中設定環境變數,來控制哪個服務作為目標。

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

您的測試可以呼叫此函式來建立 AzureClient 物件,而無需擔心底層服務。 下列 Mocha 測試會在執行任何測試之前建立服務用戶端,然後將其用來執行每個測試。 有一項單一測試會使用服務用戶端來建立容器,只要未擲回任何錯誤,就表示通過。

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

執行測試

您可以在專案的 package.json 中新增下列 npm 指令碼來執行測試:

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

若要安裝上述指令碼所需的相依性,您可以使用下列命令:

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

test:local 指令碼會使用 start-server-and-test 程式庫來啟動本機伺服器、等到連接埠 7070 (本機伺服器所使用的預設連接埠) 回應、執行測試指令碼,然後終止本機伺服器。