كيفية القيام بما يلي: استخدام أتمتة الاختبار مع Azure Fluid Relay

يعد الاختبار والتشغيل التلقائي أمرا بالغ الأهمية للحفاظ على جودة التعليمات البرمجية الخاصة بك وطول عمرها. داخليا، يستخدم Fluid مجموعة من اختبارات الوحدة والتكامل التي يتم تشغيلها بواسطة Mocha وJest وPuppeteer وWebpack.

يمكنك تشغيل الاختبارات باستخدام @fluidframework/azure-local-service المحلية أو استخدام مستأجر اختبار في خدمة Azure Fluid Relay. يمكن تكوين AzureClient للاتصال بكل من الخدمة البعيدة والخدمة المحلية، والتي تمكنك من استخدام نوع عميل واحد بين الاختبارات مقابل مثيلات الخدمة المباشرة والمحلية. الفرق الوحيد هو التكوين المستخدم لإنشاء العميل.

التشغيل التلقائي مقابل Azure Fluid Relay

يمكن أن تتصل الأتمتة بمستأجر اختبار ل Azure Fluid Relay بنفس طريقة مستأجر الإنتاج وتحتاج فقط إلى تكوين الاتصال المناسب. راجع كيفية: الاتصال إلى خدمة Azure Fluid Relay لمزيد من التفاصيل.

إنشاء عميل اختبار قابل للتكيف

لإنشاء عميل اختبار قابل للتكيف، تحتاج إلى تكوين 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);
    });
});

تشغيل الاختبارات

يمكنك إضافة البرامج النصية npm التالية في package.json لمشروعك لتشغيل الاختبارات:

"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 يستخدم البرنامج النصي مكتبة بدء الخادم والاختبار لبدء تشغيل الخادم المحلي، والانتظار حتى يستجيب المنفذ 7070 (المنفذ الافتراضي المستخدم من قبل الخادم المحلي)، وتشغيل البرنامج النصي للاختبار، ثم إنهاء الخادم المحلي.