Tôi đang viết bài kiểm tra đơn vị cho một hệ thống lái cho một trò chơi video. Hệ thống có một số hành vi (tránh khu vực này vì lý do A, tránh khu vực này vì lý do B, mỗi khu vực thêm một chút bối cảnh vào bản đồ của khu vực. Một chức năng riêng biệt sau đó phân tích bản đồ và tạo ra một chuyển động mong muốn.
Tôi gặp khó khăn khi quyết định viết bài kiểm tra đơn vị cho các hành vi. Như TDD gợi ý, tôi chỉ quan tâm đến cách các hành vi ảnh hưởng đến chuyển động mong muốn. Chẳng hạn, tránh-vì-lý do-A sẽ dẫn đến việc di chuyển ra khỏi vị trí xấu được đề xuất. Tôi thực sự không quan tâm làm thế nào hoặc tại sao hành vi lại thêm bối cảnh vào bản đồ, chỉ có điều là chuyển động mong muốn ở xa vị trí.
Vì vậy, các thử nghiệm của tôi cho từng hành vi thiết lập hành vi, làm cho nó ghi vào bản đồ, sau đó thực hiện chức năng phân tích bản đồ để thực hiện chuyển động mong muốn. Nếu chuyển động đó thỏa mãn thông số kỹ thuật của tôi thì tôi rất vui.
Tuy nhiên, bây giờ các thử nghiệm của tôi phụ thuộc vào cả hai hành vi hoạt động chính xác và chức năng phân tích cú pháp bản đồ hoạt động chính xác. Nếu chức năng phân tích cú pháp thất bại, thì tôi sẽ nhận được hàng trăm thử nghiệm thất bại thay vì một vài. Nhiều hướng dẫn viết bài kiểm tra cho thấy đây là một ý tưởng tồi.
Tuy nhiên, nếu tôi kiểm tra trực tiếp đầu ra của các hành vi bằng cách chế nhạo bản đồ, thì chắc chắn tôi đang kết nối quá chặt chẽ với việc thực hiện? Nếu tôi có thể có được chuyển động mong muốn tương tự từ bản đồ bằng cách sử dụng một hành vi hơi khác, thì các bài kiểm tra vẫn sẽ vượt qua.
Vì vậy, bây giờ tôi đang chịu đựng sự bất hòa về nhận thức. Cách tốt nhất để cấu trúc các bài kiểm tra này là gì?