Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku pada: Azure Logic Apps (Standar)
Pengujian unit adalah praktik penting yang membuat aplikasi atau solusi Anda tetap andal dan akurat sepanjang siklus hidup pengembangan perangkat lunak. Pengujian unit membantu Anda memvalidasi komponen utama dalam solusi Anda secara efisien dan sistematis.
Untuk alur kerja aplikasi logika Standar, Anda dapat membuat pengujian unit dengan menggunakan Visual Studio Code dan ekstensi Azure Logic Apps (Standar). Kemampuan ini memungkinkan Anda menggunakan definisi alur kerja untuk membuat pengujian unit dan menyesuaikannya dengan skenario yang didukung oleh solusi aplikasi logika Anda - semua tanpa memerlukan koneksi ke layanan, sistem, atau API eksternal apa pun. Pendekatan ini memungkinkan Anda menguji alur kerja tanpa harus berinteraksi dengan layanan, sistem, atau API eksternal dan memberikan manfaat berikut:
Tingkatkan kualitas alur kerja dengan mengidentifikasi dan mengatasi potensi masalah sebelum Anda menyebarkan ke lingkungan lain.
Permudah integrasi pengujian unit dengan proses pengembangan Anda, sekaligus memastikan perilaku alur kerja yang konsisten dan akurat.
Panduan ini menunjukkan cara membuat definisi pengujian unit dari alur kerja. Definisi ini meniru panggilan eksternal dari setiap operasi alur kerja tanpa mengubah logika alur kerja. Saat membuat pengujian unit untuk alur kerja, Anda mendapatkan proyek pengujian unit yang menyertakan folder berikut:
Folder yang berisi kelas bertipo kuat untuk setiap operasi yang dapat di-mock dalam alur kerja Anda.
Sebuah folder untuk setiap definisi unit pengujian. Folder ini mencakup file C# yang berisi kelas sampel dan metode. Anda menggunakan kelas dan metode ini untuk menyiapkan pernyataan Anda sendiri, mengonfirmasi bahwa alur kerja berperilaku seperti yang diharapkan, dan pastikan bahwa alur kerja berperilaku andal dan dapat diprediksi dalam ekosistem Azure Anda yang lebih besar.
Prasyarat
Akun dan langganan Azure. Jika Anda tidak memiliki langganan, daftar untuk mendapatkan akun Azure secara gratis.
Proyek aplikasi logika Standar di Visual Studio Code yang berisi setidaknya satu definisi alur kerja yang akan digunakan untuk membuat pengujian unit.
Untuk informasi selengkapnya tentang penyiapan Visual Studio Code dan pembuatan proyek, lihat Membuat alur kerja aplikasi logika Standar dengan Visual Studio Code.
Batasan dan masalah yang diketahui
Rilis ini saat ini hanya mendukung C# untuk membuat pengujian unit.
Rilis ini tidak mendukung tindakan yang tidak ditidakan. Pastikan bahwa semua tindakan dalam proses eksekusi alur kerja diuji dengan simulasi.
Rilis ini tidak mendukung jenis tindakan berikut:
- Tindakan akun integrasi
- Tindakan pengodean dan dekode EDI
Tinjau konsep dasar
Daftar berikut ini mencakup konsep dasar tetapi penting tentang pengujian unit untuk alur kerja Standar:
Pengujian unit aplikasi logika
Eksekusi alur kerja terkontrol yang menyuntikkan objek tiruan. Objek ini mewakili pemicu alur kerja atau tindakan yang bergantung pada layanan atau sistem eksternal.
Tindakan yang dapat disimulasikan
Tindakan alur kerja yang bergantung pada layanan atau sistem eksternal. Anda dapat mengonversi aksi ini menjadi aksi tiruan untuk pembuatan dan eksekusi pengujian unit.
Membuat pengujian unit dari definisi alur kerja
Di Visual Studio Code, buka proyek aplikasi logika Standar Anda.
Di proyek Anda, perluas folder definisi alur kerja.
Dari menu pintasan untuk file workflow.json , pilih Buka Perancang.
Pada toolbar perancang, pilih Buat pengujian unit.
Berikan nama yang akan digunakan untuk pengujian unit, kelas pengujian unit, dan file C#.
Folder baru bernama Pengujian sekarang muncul di ruang kerja proyek Anda. Folder ini memiliki struktur berikut:
Folder atau file Deskripsi Tests
|| <logic-app-name
>Di dalam folder Tests
, folder <logic-app-name
> akan muncul saat Anda menambahkan pengujian unit ke proyek aplikasi logika.Tests
|| <logic-app-name
>
||| <workflow-name
>< logic-app-name
> Di folder, <workflow-name
> folder muncul saat Anda menambahkan pengujian unit untuk alur kerja.Tests
|| <logic-app-name
>
||| <workflow-name
>
||||MockOutputs
|||||<operation-name-outputs
>.cs
Di dalam folder < workflow-name
>, terdapat folderMockOutputs
yang berisi file C# (.cs) dengan kelas yang bertipe kuat untuk setiap operasi konektor dalam alur kerja. Setiap nama file .cs menggunakan format berikut:
<operation-name
>Trigger\|Action
[]Output.cs
Jika operasi konektor memiliki kontrak dinamis, kelas akan muncul untuk setiap jenis dinamis. Jenis dinamis mengacu pada parameter operasi yang memiliki input dan output yang berbeda berdasarkan nilai yang disediakan untuk parameter tersebut. Anda dapat menggunakan kelas-kelas ini untuk memperluas pengujian unit Anda dan membuat tiruan baru dari awal.Tests
|| <logic-app-name
>
||| <workflow-name
>
|||| <unit-test-name
>
||||| <unit-test-name
>.cs
Di folder < workflow-name
>, folder <unit-test-name
> berisi file <unit-test-name
>.cs
. Anda menggunakan file ini, yang berisi contoh kelas dan metode C#, untuk menjalankan dan menegaskan hasil. Anda dapat mengedit file ini agar sesuai dengan skenario pengujian spesifik Anda.
Tinjau pengujian unit *file .cs
Kelas pengujian unit ini menyediakan kerangka kerja untuk menguji alur kerja aplikasi logika Standar dengan meniru pemicu dan tindakan. Kelas ini memungkinkan Anda menguji alur kerja tanpa benar-benar memanggil layanan eksternal atau API.
Menguji struktur kelas
Kelas pengujian unit umum menggunakan struktur berikut:
[TestClass]
public class <unit-test-name>
{
public TestExecutor TestExecutor;
[TestInitialize]
public void Setup()
{
this.TestExecutor = new TestExecutor("<workflow-name>/testSettings.config");
}
// Add test methods here.
// Add helper methods here.
}
Metode Setup()
Metode ini menginisialisasi kelas TestExecutor
dengan menggunakan jalur ke file konfigurasi pengaturan tes Anda. Metode ini berjalan sebelum setiap eksekusi pengujian dan membuat instans baru TestExecutor
.
[TestInitialize]
public void Setup()
{
this.TestExecutor = new TestExecutor("<workflow-name>/testSettings.config");
}
Sampel metode pengujian
Bagian berikut menjelaskan metode pengujian sampel yang dapat Anda gunakan di kelas pengujian unit Anda.
Uji data tiruan statis
Metode berikut menunjukkan cara menggunakan data tiruan statis untuk menguji alur kerja Anda. Dalam metode ini, Anda dapat menyelesaikan tugas berikut:
- Atur nilai properti pada tindakan tiruan Anda.
- Jalankan alur kerja dengan data tiruan yang dikonfigurasi.
- Konfirmasikan bahwa eksekusi berhasil.
[TestMethod]
public async Task <workflow-name>_<unit-test-name>_ExecuteWorkflow_SUCCESS_Sample1()
{
// PREPARE mock: Generate mock trigger data.
var triggerMockOutput = new WhenMessagesAreAvailableInAQueuePeeklockTriggerOutput();
// Sample that shows how to set the properties for triggerMockOutput
// triggerMockOutput.Body.Id = "SampleId";
var triggerMock = new WhenMessagesAreAvailableInAQueuePeeklockTriggerMock(outputs: triggerMockOutput);
// Generate mock action data.
var actionMockOutput = new CallExternalAPIActionOutput();
// Sample that shows how to set the properties for actionMockOutput
// actionMockOutput.Body.Name = "SampleResource";
// actionMockOutput.Body.Id = "SampleId";
var actionMock = new CallExternalAPIActionMock(name: "Call_External_API", outputs: actionMockOutput);
// ACT: Create the UnitTestExecutor instance. Run the workflow with mock data.
var testMock = new TestMockDefinition(
triggerMock: triggerMock,
actionMocks: new Dictionary<string, ActionMock>()
{
{actionMock.Name, actionMock}
});
var testRun = await this.TestExecutor
.Create()
.RunWorkflowAsync(testMock: testMock).ConfigureAwait(continueOnCapturedContext: false);
// ASSERT: Confirm successful workflow execution and that the status is 'Succeeded'.
Assert.IsNotNull(value: testRun);
Assert.AreEqual(expected: TestWorkflowStatus.Succeeded, actual: te
stRun.Status);
}
Pengujian data tiruan dinamis
Metode berikut menunjukkan cara menggunakan data tiruan dinamis dengan metode panggilan balik. Pendekatan ini memberi Anda dua opsi yang secara dinamis menghasilkan data tiruan:
- Tentukan metode panggilan balik terpisah.
- Gunakan fungsi lambda sebaris.
Kedua pendekatan memungkinkan Anda membuat respons dinamis berdasarkan konteks eksekusi pengujian unit.
[TestMethod]
public async Task <workflow-name>_<unit-test-name>_ExecuteWorkflow_SUCCESS_Sample2()
{
// PREPARE: Generate mock trigger data.
var triggerMockOutput = new WhenMessagesAreAvailableInAQueuePeeklockTriggerOutput();
// Sample that shows how to set triggerMockOutput properties.
// triggerMockOutput.Body.Flag = true;
var triggerMock = new WhenMessagesAreAvailableInAQueuePeeklockTriggerMock(outputs: triggerMockOutput);
// PREPARE: Generate mock action data.
// OPTION 1: Define a callback class.
var actionMock = new CallExternalAPIActionMock(name: "Call_External_API", onGetActionMock: CallExternalAPIActionMockOutputCallback);
// OPTION 2: Define inline with a lambda function.
/*var actionMock = new CallExternalAPIActionMock(name: "Call_External_API", onGetActionMock: (testExecutionContext) =>
{
return new CallExternalAPIActionMock(
status: TestWorkflowStatus.Succeeded,
outputs: new CallExternalAPIActionOutput {
// If this account contains a JObject Body,
// set the properties you want here:
// Body = "something".ToJObject()
}
);
});*/
// ACT: Create the UnitTestExecutor instance. Run the workflow with mock data.
var testMock = new TestMockDefinition(
triggerMock: triggerMock,
actionMocks: new Dictionary<string, ActionMock>()
{
{actionMock.Name, actionMock}
});
var testRun = await this.TestExecutor
.Create()
.RunWorkflowAsync(testMock: testMock).ConfigureAwait(continueOnCapturedContext: false);
// ASSERT: Confirm successful workflow execution and that the status is 'Succeeded'.
Assert.IsNotNull(value: testRun);
Assert.AreEqual(expected: TestWorkflowStatus.Succeeded, actual: testRun.Status);
}
Metode pembantu
Bagian berikut menjelaskan metode yang digunakan oleh metode pengujian sampel. Metode pembantu muncul di bawah metode pengujian dalam definisi kelas.
Metode panggilan balik
Metode berikut secara dinamis menghasilkan data tiruan. Nama metode bervariasi berdasarkan nama tindakan yang ditiru dalam metode pengujian untuk data tiruan statis atau dinamis. Anda dapat mengedit metode ini untuk mengembalikan respons tiruan yang berbeda berdasarkan persyaratan skenario pengujian Anda atau menggunakannya sebagai templat untuk membuat metode panggilan balik dinamis Anda sendiri.
public CallExternalAPIActionMock CallExternalAPIActionMockOutputCallback(TestExecutionContext context)
{
// Sample mock data: Dynamically change the mocked data for 'actionName'.
return new CallExternalAPIActionMock(
status: TestWorkflowStatus.Succeeded,
outputs: new CallExternalAPIActionOutput {
// If this account contains a JObject Body,
// set the properties you want here:
// Body = "something".ToJObject()
}
);
}