방법: Azure Fluid Relay에서 테스트 자동화 사용

테스트 및 자동화는 코드의 품질과 수명을 유지하는 데 매우 중요합니다. 내부적으로 Fluid는 Mocha, Jest, PuppeteerWebpack이 제공하는 다양한 단위 및 통합 테스트를 사용합니다.

로컬 @fluidframework/azure-local-service를 사용하거나 Azure Fluid Relay 서비스의 테스트 테넌트를 사용하여 테스트를 실행할 수 있습니다. AzureClient는 원격 서비스와 로컬 서비스 모두에 연결하도록 구성할 수 있으므로 라이브 및 로컬 서비스 인스턴스에 대한 테스트 간에 단일 클라이언트 유형을 사용할 수 있습니다. 유일한 차이점은 클라이언트를 만드는 데 사용되는 구성입니다.

Azure Fluid Relay에 대한 Automation

자동화는 프로덕션 테넌트와 동일한 방식으로 Azure Fluid Relay용 테스트 테넌트에 연결할 수 있으며 적절한 연결 구성만 필요합니다. 자세한 내용은 방법: Azure Fluid Relay 서비스에 연결을 참조하세요.

적응형 테스트 클라이언트 만들기

적응형 테스트 클라이언트를 만들기 위해서는 서비스 대상에 따라 Azure 클라이언트를 다르게 구성해야 합니다. 아래 함수는 환경 변수를 사용하여 이를 결정합니다. 대상 서비스를 제어하기 위해 테스트 스크립트에서 환경 변수를 설정할 수 있습니다.

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(로컬 서버에서 사용하는 기본 포트)이 응답할 때까지 기다렸다가 테스트 스크립트를 실행한 다음 로컬 서버를 종료합니다.