Pertama, minta maaf untuk judulnya, saya tidak bisa memikirkan cara termudah untuk menjelaskannya!
Saya memiliki metode yang saya ingin menulis unit test. Saya akan menjaganya tetap generik karena saya tidak ingin membahas implementasi metode ini, hanya pengujian saja. Metodenya adalah:
public void HandleItem(item a)
{
CreateNewItem();
UpdateStatusOnPreviousItem();
SetNextRunDate();
}
Jadi kelas ini memiliki satu metode publik yang kemudian memanggil beberapa metode pribadi untuk melakukan logika.
Jadi ketika menulis unit test saya ingin memeriksa ketiga hal yang telah dilakukan. Karena mereka semua dipanggil dengan cara yang sama, saya pikir saya bisa melakukannya sebagai satu tes:
public void GivenItem_WhenRun_Thenxxxxx
{
HandleItem(item);
// Assert item has been created
// Assert status has been set on the previous item
// Assert run date has been set
}
Tapi saya pikir saya juga bisa menulisnya sebagai tiga tes terpisah:
public void GivenItem_WhenRun_ThenItemIsCreated()
{
HandleItem(item);
}
public void GivenItem_WhenRun_ThenStatusIsUpdatedOnPreviousItem()
{
HandleItem(item);
}
public void GivenItem_WhenRun_ThenRunDateIsSet()
{
HandleItem(item);
}
Jadi bagi saya ini tampak lebih baik karena pada dasarnya daftar persyaratan, tetapi kemudian ketiganya terkait dan memang membutuhkan pekerjaan yang sama persis dilakukan pada metode yang diuji, jadi saya menjalankan kode yang sama 3 kali.
Apakah ada pendekatan yang disarankan untuk dilakukan?
Terima kasih