Kadang-kadang fungsi pribadi dari suatu modul atau kelas hanyalah unit fungsional internal internal yang belum diekstraksi, yang mungkin pantas untuk diuji sendiri. Jadi mengapa tidak mengujinya? Kami akan menulis tes untuk mereka nanti jika / ketika mereka diekstraksi. Jadi mengapa tidak menulis tes sekarang, ketika mereka masih bagian dari file yang sama?
Untuk menunjukkan:
Pertama, saya menulis module_a
. Sekarang saya ingin menulis tes untuk itu. Saya ingin menguji fungsi 'pribadi' _private_func
. Saya tidak mengerti mengapa saya tidak akan menulis tes untuk itu, jika nanti saya mungkin refactor ke modul internalnya sendiri, dan kemudian menulis tes untuk itu.
Misalkan saya memiliki modul dengan fungsi-fungsi berikut (bisa juga kelas):
def public_func(a):
b = _do_stuff(a)
return _do_more_stuff(b)
_do_stuff
dan _do_more_stuff
merupakan fungsi 'pribadi' dari modul.
Saya memahami gagasan bahwa kita hanya harus menguji antarmuka publik, bukan detail implementasi. Namun, ada satu hal:
_do_stuff
dan _do_more_stuff
berisi sebagian besar fungsi modul. Masing-masing dari mereka bisa menjadi fungsi publik dari modul 'internal' yang berbeda. Tetapi mereka belum berevolusi dan cukup besar untuk diekstraksi ke file yang terpisah.
Jadi menguji fungsi-fungsi ini terasa benar karena mereka adalah unit fungsionalitas yang penting. Jika mereka berada di modul yang berbeda sebagai fungsi publik, kami akan mengujinya. Jadi mengapa tidak menguji mereka ketika mereka belum (atau pernah) diekstraksi ke file yang berbeda?