9

Dường như với tôi rằng các nhà phát triển web của các ngôn ngữ lập trình khác nhau thường chia sẻ các ý kiến ​​khác nhau về vấn đề này. Ví dụ, các nhà phát triển web Ruby (với Rails là khuôn khổ thống trị) xuất hiện để nghĩ về các bộ điều khiển như mã keo, cần phải có các kiểm tra chức năng, nhưng không phải kiểm thử đơn vị. Một thái độ tương tự thống trị trong thế giới PHP, nhưng đã có một số sáng kiến ​​(ví dụ: Symfony2).Các bộ điều khiển trong ứng dụng web MVC có thể kiểm tra đơn vị không?

Tuy nhiên, dường như, một số nhà phát triển ASP.NET MVC thực sự là want their controllersto be unit-testable.

Điều tôi muốn biết là nếu điều đó thực sự hiệu quả trong phát triển web. Bộ điều khiển có đáng thử nghiệm đơn vị không? Thiết kế chúng có phải là đơn vị có thể kiểm tra được tốc độ phát triển đáng kể trong các ứng dụng không tầm thường không? Ngoài ra, có bất kỳ khuôn khổ web nào cố gắng thực thi kiểm soát đơn vị điều khiển không? Kinh nghiệm cá nhân được chào đón.

Trả lời

2

Mọi thứ đáng để thử nghiệm đơn vị. Trong trường hợp này, nó phụ thuộc vào số lượng logic được nhận ra trong bộ điều khiển ... Trong dự án nhỏ, bạn có thể không có logic bên ngoài được đính kèm và bạn có thể muốn thực hiện một số thao tác cơ sở dữ liệu trong bộ điều khiển của mình (như trên nhiều ví dụ của Microsoft) . Trong các giải pháp lớn hơn, bạn có thể không cần phải kiểm tra bộ điều khiển xa như công việc của nó chỉ là để gọi các phương thức logic nghiệp vụ được chỉ định ... Nó không phải là nếu các bộ điều khiển có giá trị để được kiểm tra đơn vị, đó là về nếu mã mà chúng chứa là .. .

4

Câu trả lời ngắn: "Có" với câu trả lời "Nếu", "Không" với "Nhưng".

Những ngày này tôi có xu hướng bỏ lỡ các kiểm tra đơn vị cấp điều khiển có lợi cho vùng phủ sóng thử nghiệm đơn vị mạnh mẽ của các mô hình và đối tượng kinh doanh và phạm vi kiểm tra chức năng với Cucumber. Giả định ở đây là các bộ điều khiển là các đối tượng có trọng lượng rất nhẹ định tuyến dữ liệu thành các mô hình cơ bản đóng gói phần lớn logic nghiệp vụ.

Tuy nhiên, tôi vẫn có xu hướng có một số vùng phủ sóng rất nhẹ của một số luồng điều khiển ở cấp bộ điều khiển. Nó chỉ có xu hướng kiểm tra sự tỉnh táo hơn.

Một trong những vấn đề với kiểm tra mức bộ điều khiển là bạn thường phải giả hoặc tạo ra một số lượng lớn các kiểu và đối tượng để kiểm tra hiệu quả. Với điều này, tôi thấy nó có giá trị hơn khi đẩy các thử nghiệm này vào các lớp chức năng, nơi kiểu thử nghiệm cho phép bạn thể hiện hiệu quả hơn các phụ thuộc này (hoặc bằng cách làm theo các bước cần thiết để tạo chúng thông qua ứng dụng của bạn hoặc thông qua một hệ thống như Quy tắc khai báo của Cucumber).

0

Một trong những tính năng tốt nhất của mẫu MVC là các bộ điều khiển có thể được kiểm tra riêng biệt với đầu ra HTML của các khung nhìn. Các trang kết hợp logic với đầu ra HTML khó kiểm tra, và đây là một trong những vấn đề mà MVC giải quyết - nó làm cho bộ điều khiển của bạn tất cả về logic và bạn có thể kiểm tra nó mà không cần phân tích cú pháp HTML.

Lý tưởng nhất, bộ điều khiển của bạn sẽ nhận dữ liệu từ các lớp truy cập dữ liệu riêng biệt mà bạn có thể phân tích cho các bài kiểm tra của mình, vì vậy bạn chỉ đang thử nghiệm logic. Về cơ bản, bạn cô lập bộ điều khiển của bạn từ cơ sở dữ liệu theo cùng một cách MVC tách biệt nó khỏi khung nhìn - sau đó các bài kiểm tra rất dễ dàng vì bạn không cần một cơ sở dữ liệu với dữ liệu thử nghiệm.

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