17

Tôi đã sử dụng TDD trong vài tháng, bây giờ tôi muốn tìm hiểu cách kiểm tra Bộ điều khiển (MVC) của mình.Tôi có nên kiểm tra bộ điều khiển (MVC) của mình không?

Kiểm tra đơn vị được thực hiện bằng cách kiểm tra đơn vị nhỏ nhất của từng chức năng. Đôi khi, bộ điều khiển không nhỏ. Họ lấy dữ liệu từ Mô hình và chuyển đến lượt xem.

Tôi nên kiểm tra bộ điều khiển bằng cách nào? Tôi có nên giả lập phụ thuộc của bộ điều khiển không?

Kiểm tra bộ điều khiển có được coi là kiểm tra tích hợp không?

Cảm ơn bạn.

Trả lời

2

Cùng một câu hỏi hỏi ngày hôm qua:

Does it make sense to test controllers

Và theo ý kiến ​​của tôi - YES, nó làm cho tinh thần để kiểm tra bộ điều khiển. Bạn có thể:

  • dịch vụ giả phía sau họ, vì vậy nó dễ dàng hơn để kiểm tra chỉ kiểm soát bản thân
  • dịch vụ nghỉ unmocked và làm các xét nghiệm hội nhập cũng
+0

Dịch vụ có nghĩa là gì? – user972959

17

tôi đang làm TDD cho thời gian khá dài . Tôi đang làm TDD với ASP.NET MVC trong hơn một năm nay.

Tôi bắt đầu với quy tắc kinh điển: "không có dòng mã mà không có kiểm tra đơn vị", vì vậy tôi đã kiểm tra mọi thứ - bao gồm cả bộ điều khiển. Bộ điều khiển phải được kiểm tra, đây là một trong những mục tiêu của khuôn khổ MVC - Làm cho những thứ đó có thể kiểm chứng được.

Đối với các ứng dụng nhỏ tiếp cận hoạt động thực sự tốt. Hầu như tất cả logic được đặt bên trong bộ điều khiển, mọi thứ được kiểm tra rất độc đáo.

Nhưng miễn là tôi tiếp tục với MVC, tôi bắt đầu thay đổi suy nghĩ của mình. Tôi cố giữ bộ điều khiển càng mỏng càng tốt. Lý tưởng là không có gì nhiều hơn khi ủy quyền cuộc gọi đến một số đối tượng kinh doanh và gói kết quả. Phần còn lại là bởi các bộ lọc.

Điều đó cũng hiệu quả đối với tôi! Tôi đang có đối tượng kinh doanh bây giờ được thực hiện/thử nghiệm riêng biệt, do đó, bộ điều khiển chỉ là điểm tích hợp. Không có lý do để kiểm tra điểm tích hợp vì nó là nhỏ.

Về kiểm tra tích hợp: Tôi chưa đáp ứng được tình huống, nơi tôi thực sự cần điều đó. Đừng quên, các bộ điều khiển đó luôn phụ thuộc vào các trừu tượng mà bạn đưa vào bởi hàm tạo. Miễn là bạn có các giả định 'tốt' làm thế nào những trừu tượng này hoạt động, bạn tạo các xét nghiệm đơn vị thích hợp. Khi bạn thất bại, bạn chỉ cần sửa các bài kiểm tra đơn vị.

Kiểm tra tích hợp rất quan trọng và hữu ích, nhưng tôi cố gắng tạo những bài kiểm tra càng ít càng tốt.

+0

Bạn viết bài kiểm tra của mô hình trước, phải không? Khi nào bạn viết các bài kiểm tra tích hợp? Bạn có thể trích dẫn một ví dụ không? – user972959

5

Tôi có cùng cách tiếp cận với bộ điều khiển như Alexander B. Bộ điều khiển của tôi mỏng và câm. Tuy nhiên tôi vẫn viết các bài kiểm tra cho họ để đảm bảo họ đang gọi các đối tượng kinh doanh hoặc dịch vụ một cách chính xác và truyền các thông số chính xác.

Điều này có lẽ được minh họa rõ nhất bằng một lỗi thực tế mà cuối cùng tôi đã bắt được tuần trước. Tôi có một bộ điều khiển cho phép người quản lý phê duyệt hoặc từ chối yêu cầu từ người dùng, nó có hai chế độ xem, chế độ xem danh sách các yêu cầu chưa xử lý và chế độ xem chi tiết cho mỗi yêu cầu. Cả hai chế độ xem đều có thể phê duyệt hoặc từ chối. Dịch vụ mà trình điều khiển gọi đến có một loạt các phương thức được tiếp cận khác, bao gồm một phương thức để thay đổi trạng thái yêu cầu ...bạn có thể thấy nơi này đang diễn ra. Chế độ xem danh sách được gọi là phương thức chính xác để phê duyệt hoặc từ chối và kích hoạt luồng công việc, chế độ xem chi tiết chỉ được gọi là phương thức trạng thái thay đổi và không khởi chạy bất kỳ luồng công việc nào khác. Đây là lỗi mã hóa của tôi, nhưng đối với cuộc sống của tôi, tôi không thể nhìn thấy nó cho các lứa tuổi - luồng công việc chạy trong các chủ đề nền và tôi đã trải qua một tuần chạy qua các luồng đó, giả sử đó là lỗi trong phần đó.

Vì vậy, đối với tôi

  • Ngay sau khi điều khiển của bạn qua dữ liệu ở nơi khác nó cần kiểm tra.
  • Nếu kiểm tra điều khiển của bạn mô hình hiệu lực nó cần kiểm tra (nếu một ai đó lấy ra kiểm tra?)

, vv

+0

đến một Paris không phải là câm ... – Elisabeth

2

Để phát triển một thử nghiệm đơn vị cho điều khiển của bạn, một cách tự nhiên là giả lập các giao diện bộ điều khiển phụ thuộc vào ('điều' nó điều khiển, hãy gọi chúng là IControllable s). Sau đó, bạn có thể xác minh rằng bộ điều khiển thao tác các đối tượng được điều khiển theo cách mong muốn.

Nếu tương tác giữa bộ điều khiển và đối tượng được điều khiển phức tạp, hãy thử nghiệm tích hợp chuyên dụng có thể hợp lý. Ví dụ, có thể có một loạt các lớp thực hiện IControllable - mỗi cài đặt này có hoạt động cùng nhau với bộ điều khiển không? Có lẽ nhiều khác nhau IControllables sẽ tương tác (sử dụng cùng một tài nguyên)? Hoặc IControllables có thể có những cách phức tạp để định cấu hình chúng ảnh hưởng đến hành vi của chúng? Một cách để kiểm tra điều này là viết một bộ thử nghiệm có thể tái sử dụng, trong đó bạn bơm trong một loạt các triển khai hoặc kết hợp đáng ngờ IControllable ở đó.

Cuối cùng nhưng không kém phần quan trọng, TDD cũng khoảng kiểm tra chấp nhận. Do đó, khi thực hiện TDD, bạn cũng sẽ có kiểm tra đầu cuối cấp cao để thực thi các kịch bản mà người dùng cuối sẽ nhận ra. Nhiều khả năng, những điều này cũng sẽ thực hiện điều khiển - theo cách đó cũng kiểm tra sự tích hợp thích hợp giữa các lớp điều khiển của bạn và (một số).

Các vấn đề liên quan