Đôi khi các chức năng riêng tư của một mô-đun hoặc lớp chỉ đơn giản là các đơn vị chức năng nội bộ chưa được trích xuất, có thể xứng đáng được thử nghiệm riêng. Vậy tại sao không kiểm tra chúng? Chúng tôi sẽ viết bài kiểm tra cho chúng sau này nếu / khi chúng được giải nén. Vậy tại sao không viết các bài kiểm tra ngay bây giờ, khi chúng vẫn là một phần của cùng một tệp?
Để lam sang tỏ:
Đầu tiên, tôi đã viết module_a
. Bây giờ tôi muốn viết bài kiểm tra cho nó. Tôi muốn kiểm tra chức năng 'riêng tư' _private_func
. Tôi không hiểu tại sao tôi sẽ không viết một bài kiểm tra cho nó, nếu sau này tôi có thể cấu trúc lại nó thành mô-đun bên trong của chính nó, và sau đó viết các bài kiểm tra cho nó.
Giả sử tôi có một mô-đun với các chức năng sau (nó cũng có thể là một lớp):
def public_func(a):
b = _do_stuff(a)
return _do_more_stuff(b)
_do_stuff
và _do_more_stuff
là các chức năng 'riêng tư' của mô-đun.
Tôi hiểu ý tưởng rằng chúng ta chỉ nên kiểm tra giao diện công cộng, không phải chi tiết triển khai. Tuy nhiên, đây là điều:
_do_stuff
và _do_more_stuff
chứa phần lớn các chức năng của mô-đun. Mỗi một trong số chúng có thể là một chức năng công khai của một mô-đun 'nội bộ' khác nhau. Nhưng chúng chưa được phát triển và đủ lớn để được trích xuất thành các tệp riêng biệt.
Vì vậy, kiểm tra các chức năng này cảm thấy đúng bởi vì chúng là đơn vị quan trọng của chức năng. Nếu chúng ở các mô-đun khác nhau như các chức năng công cộng, chúng tôi sẽ kiểm tra chúng. Vậy tại sao không kiểm tra chúng khi chúng chưa (hoặc chưa bao giờ) được trích xuất sang một tệp khác?