Tôi biết một trong những ý định của Dan North trong việc phát triển BDD là di chuyển từ vựng ra khỏi sự phức tạp của miền thử nghiệm. Tuy nhiên, trong việc thực hiện một cách tiếp cận bên ngoài, có vẻ như chúng tôi vẫn yêu cầu một số hiểu biết về hành vi nhạo báng (hoặc hành vi cứng đầu, nếu bạn thích). Bắc đề nghị trong this video rằng nếu tôi bắt đầu với các đối tượng miền ngoài cùng và làm việc theo cách của tôi vào bên trong, tôi giả lập cộng tác viên khi tôi phát hiện ra chúng và sau đó thay thế chúng bằng cách triển khai thích hợp. Vì vậy, cuối cùng, tôi kết thúc với một tập hợp các bài kiểm tra end-to-end.Làm thế nào/những gì để thử trong BDD
Martin Fowler dường như thấy nó khác một chút trong this blog post khi ông xác định hai trại TDD: "TDD cổ điển" sử dụng các đối tượng thực nếu có thể và mô hình khi cần thiết và "mockist TDD". . Anh thấy BDD đang chăm sóc về phía sau. Tức là, khi kết thúc phát triển một tính năng, phương pháp "giả lập" sẽ để lại mocks trong các thử nghiệm thực tế (xin lỗi để sử dụng từ đó trong một cuộc thảo luận BDD).
Công bằng, cả hai vật liệu đều có tuổi, và có lẽ mọi thứ trở nên rõ ràng hơn khi BDD tiến hóa dọc theo dòng giữa được áp dụng ở cấp đơn vị và mức chấp nhận.
Nhưng câu hỏi của tôi dành cho cộng đồng về cơ bản là: khi câu chuyện của tôi hoàn thành, bao nhiêu bài kiểm tra đầu cuối của tôi thực sự là bao nhiêu? North explains rằng BDD yêu cầu trừu tượng hóa. Ví dụ: khi tôi thử nghiệm hành vi đăng nhập, thì kịch bản của tôi sẽ nêu chi tiết ý nghĩa của quá trình đăng nhập. Tuy nhiên, khi tôi thực hiện một số trường hợp khác mà yêu cầu nhưng không phải là về việc đăng nhập, tôi không muốn phải thực hiện các bước đó lặp đi lặp lại. Tôi muốn một sự trừu tượng dễ dàng chỉ đơn giản là nói "Với tôi đã đăng nhập", vì vậy tôi có thể thực hiện hành vi khác của mình. Vì vậy, dường như cách tiếp cận trừu tượng của tôi sẽ là ở chỗ tôi thử một số cộng tác viên (hoặc cung cấp một "kiểm tra kép"), và một số kịch bản có thể sử dụng chúng nhiều hơn những người khác. Ví dụ, tôi luôn luôn giả lập các tài nguyên bên ngoài, chẳng hạn như một DB hay một máy chủ thư?
Có lẽ tôi đang đặt câu hỏi sai. BDD là tất cả về giao tiếp, rút ngắn chu kỳ phản hồi và khám phá những gì bạn không biết. Có thể cái gì và cái gì không giả tạo là một câu hỏi không liên quan, miễn là hành vi mà chúng ta quan tâm thực sự hoạt động. Tôi tò mò về cách tiếp cận của người khác ở đây.