Menerapkan aturan khusus domain dengan penulisan tes kustom

Selesai

Sejauh ini Anda telah melihat cara menjalankan beberapa pengujian pada template Anda. Namun, Anda mungkin beroperasi di perusahaan atau tim yang memiliki seperangkat aturannya sendiri. Aturan ini mungkin berarti Bahwa Anda ingin menyesuaikan pengalaman pengujian. Anda mungkin memiliki skenario berikut:

  • Jalankan rangkaian pengujian tertentu. Setelah instalasi toolkit pengujian, Anda diberikan serangkaian tes yang akan dijalankan. Pengujian ini terletak di direktori berikut: <instal direktori>/arm-ttk/testcases/deploymentTemplate.

    Dimungkinkan untuk menyesuaikan pengalaman uji coba ini. Salah satu cara untuk menyesuaikan, seperti yang telah kita ketahui di pelajaran sebelumnya, adalah dengan menggunakan parameter -Test. Anda juga dapat mengedit pengujian apa yang sedang dijalankan dengan menghapus file di direktori. Anda dapat melewati pengujian tertentu dengan menggunakan parameter -Skip.

  • Menulis dan menjalankan pengujian khusus domain. File uji dapat ditulis untuk menerapkan aturan khusus domain. Unit ini sebagian besar akan berfokus pada skenario ini.

Penulisan dan menjalankan tes Anda sendiri

Anda telah memutuskan untuk menulis pengujian khusus domain Anda sendiri. Ada aliran untuk penulisan dan menjalankan tes seperti itu:

  1. Buat file di <direktori install directory>/arm-ttk/testcases/deploymentTemplate.
  2. Tulis file di PowerShell.
  3. Jalankan file dan periksa hasilnya.

Membuat pengujian kustom

Pengujian kustom perlu ditempatkan di direktori yang benar: <instal direktori>/arm-ttk/testcases/deploymentTemplate. Ini juga perlu mengikuti standar penamaan dengan tanda hubung, dengan akhiran .test, dan berakhiran .ps1. File pengujian umum terlihat seperti ini:

Domain-Specific.test.ps1

Penulisan

Untuk menulis nama file pengujian, Anda perlu menulisnya di PowerShell. Tiga bagian file pengujian adalah:

  • Dokumentasi . Bagian ini opsional tetapi sangat menguntungkan untuk ditambahkan. Itu berada di bagian atas file dan biasanya berisi serangkaian komentar yang menggambarkan apakah tes itu, apa yang dilakukannya, dan bagaimana menyebutnya. Komentar dapat terlihat seperti contoh berikut:

    <#
    .Synopsis
         Ensures that all IDs use the resourceID() function.
    .Description
         Ensures that all IDs use the resourceID() function, or resolve to parameters or variables that use the ResourceID() function.
    .Example
         Test-AzTemplate -TemplatePath .\100-marketplace-sample\ -Test IDs-Should-Be-Derived-From-ResourceIDs
    #>
    

    Contoh sebelumnya menjelaskan fungsi pengujian dalam deskripsi singkat di bagian .Synopsis. Ada juga deskripsi yang lebih panjang di bagian .Description. Terakhir, ada bagian .Example yang menunjukkan berbagai cara untuk menjalankan pengujian.

  • Parameter masukan. File pengujian dapat memiliki sekumpulan parameter input. Bagian ini didefinisikan oleh param kata kunci dan tanda kurung. Biasanya bisa terlihat seperti ini:

    param(
       [Parameter(Mandatory=$true)]
       [PSObject]$TemplateObject,
    
       [Parameter(Mandatory=$true)]
       [string]$TemplateFileName,
    
       [string]$SampleName = "$ENV:SAMPLE_NAME"
    )
    

    Contoh sebelumnya menunjukkan tiga parameter: $TemplateObject, $TemplateFileName, dan $SampleName. Dua parameter pertama adalah wajib, seperti yang ditunjukkan oleh dekorasi Parameter[(Mandatory = $true)]. Parameter dinamai sesuai dengan artinya. $TemplateObject berisi representasi objek file templat, dan TemplateFileName berisi nama file yang sedang diuji.

    Petunjuk / Saran

    Ada informasi selengkapnya tentang parameter dalam artikel toolkit pengujian templat ARM.

  • Logika pengujian. Bagian terakhir dari tes adalah logika tes. Sebagian besar tes biasanya ingin melakukan langkah-langkah berikut:

    1. Iterasi melalui template.
    2. Verifikasi satu atau beberapa kondisi.
    3. Timbulkan kesalahan jika ada yang tidak beres.

Pembantu kode

Ada banyak pembantu yang akan membantu Anda menemukan konten yang Anda butuhkan dan melaporkan kesalahan apa pun. Berikut adalah dua contoh pembantu kode:

  • Find-JsonContent. Membantu Anda menemukan elemen tertentu dengan nilai tertentu. Berikut contohnya:

    Find-JsonContent -Key apiVersion -Value * -Like
    

    Kode sebelumnya membantu menemukan atribut JSON dengan nama apiVersion dan nilai *, yang pada dasarnya berarti semua atribut bernama apiVersion. Ini akan cocok dengan objek JSON seperti:

    {
       "apiVersion": "2021-01-01"
    }
    
  • Kesalahan Penulisan. Membantu Anda berkomunikasi dengan pelari uji bahwa ada sesuatu yang salah dalam template. Anda dapat menggunakannya untuk mengekspresikan pesan kesalahan dan menginterpolasi ekspresi string dengan variabel apa pun yang Anda butuhkan. Berikut ini contoh cara menggunakannya:

      Write-Error "Resource $($resource.Name) Location must be located in westeurope'" -TargetObject $resource
    

Jalankan tes

Pada poin ini, Anda telah menulis pengujian Anda. Ini akan dijalankan bersama-sama dengan semua file lain dalam direktori yang sama.

Seperti halnya pengujian lainnya, Anda dapat memilih untuk hanya menjalankan file uji tertentu dengan menggunakan parameter -Test. Sebagai parameter, Anda akan memberinya nama file uji yang dilucuti dari ekstensi file. Custom-Test.test.ps1 kemudian akan dijalankan dengan sendirinya melalui Test-AzTemplate -TemplatePath /path/to/template -Test Custom-Test.