Hiện tại có một cuộc tranh luận đang diễn ra trong nhóm của chúng tôi về việc liệu việc sửa đổi thiết kế mã để cho phép thử nghiệm đơn vị là mùi mã hay ở mức độ nào có thể được thực hiện mà không phải là mùi mã. Điều này đã xảy ra bởi vì chúng ta chỉ mới bắt đầu áp dụng các thực tiễn có mặt ở mọi công ty phát triển phần mềm khác.
Cụ thể, chúng tôi sẽ có một dịch vụ API Web sẽ rất mỏng. Trách nhiệm chính của nó sẽ là xử lý các yêu cầu / phản hồi trên web và gọi một API cơ bản có chứa logic nghiệp vụ.
Một ví dụ là chúng tôi dự định tạo một nhà máy sẽ trả về loại phương thức xác thực. Chúng tôi không cần nó để kế thừa một giao diện vì chúng tôi không dự đoán nó sẽ là bất cứ thứ gì khác ngoài loại cụ thể. Tuy nhiên, để kiểm tra đơn vị dịch vụ API Web, chúng tôi sẽ cần phải giả định nhà máy này.
Điều này về cơ bản có nghĩa là chúng ta hoặc thiết kế lớp trình điều khiển API Web để chấp nhận DI (thông qua hàm tạo hoặc trình thiết lập của nó), có nghĩa là chúng ta thiết kế một phần của trình điều khiển chỉ để cho phép DI và thực hiện giao diện mà chúng ta không cần, hoặc chúng ta sử dụng một khung bên thứ ba như Ninject để tránh phải thiết kế bộ điều khiển theo cách này, nhưng chúng ta vẫn phải tạo giao diện.
Một số người trong nhóm dường như miễn cưỡng thiết kế mã chỉ vì mục đích thử nghiệm. Dường như với tôi rằng phải có một sự thỏa hiệp nào đó nếu bạn hy vọng kiểm tra đơn vị, nhưng tôi không chắc làm thế nào để làm giảm sự lo lắng của họ.
Rõ ràng, đây là một dự án hoàn toàn mới, vì vậy nó không thực sự về việc sửa đổi mã để cho phép thử nghiệm đơn vị; đó là về việc thiết kế mã chúng ta sẽ viết để có thể kiểm tra được đơn vị.