2014-09-23 22 views
10

Tôi đã dành nhiều ngày cố gắng chế nhạo, sơ khai và giả mạo đường đến một ứng dụng có thể kiểm chứng. Tôi thường không kiểm tra các hành động của bộ điều khiển, nhưng thay vào đó hãy kiểm tra tất cả các lớp và các mẫu khác của tôi.Có thể dự án ASP.NET MVC với định tuyến thuộc tính được kiểm tra không?

Tường tôi nhấn là với tính năng định tuyến thuộc tính mới. Mặc dù tôi có thể sử dụng các lớp định tuyến để đăng ký các quy tắc của mình, v.v. Tôi nhận được lỗi này khi gọi MapMvcAttributeRoutes.

Phương pháp này không thể được gọi trong pre-start khởi giai đoạn của ứng dụng

này được thảo luận ở đây.

MapMvcAttributeRoutes: This method cannot be called during the application's pre-start initialization phase

Thành thật mà nói, tôi không thể hiểu (các) câu trả lời. Không mã, nhưng phân mảnh của nó vào phiên bản, liên kết đến các lỗi khác, GitHub, vv

tôi một chút mất như dòng câu trả lời dưới:

Tính đến ngày 23 Tháng 10 năm 2014. Có thể để đăng ký tất cả các tuyến đường trong điều kiện thử nghiệm, tôi cần những phiên bản nào của MVC và các lớp/phương thức nào tôi gọi để thực hiện?

Hiện tại, các lớp học của tôi sử dụng UrlHelper đang thay đổi vì các tuyến đường cần thiết bị thiếu. Tôi đang tiêm các lớp con để bỏ qua vấn đề, nhưng tôi không nghĩ rằng nó không hợp lý để giả mạo môi trường MVC thời gian chạy và chạy ứng dụng của tôi mà không có nhiều nhào lộn DI. Nó sẽ là tốt đẹp nếu đây là một người trợ giúp đơn giản trong khung chính nó mà có thể mất một đối tượng JSON mô tả một yêu cầu HTTP thô và có Controller, HttpContext, ControllerContext vv vv tất cả được tạo ra đúng như thể nó đã được một yêu cầu thực sự ra khỏi dây.

Cảm ơn,

Luke

+0

Trong khi điều này là dành cho WebAPI, cần làm việc tôi whould nghĩ .. nó sử dụng một mô hình UrlHelper ... http : //www.asp.net/web-api/overview/testing-and-debug/unit-testing-controllers-in-web-api –

+0

Hiện tại, tôi hoặc giả lập 'UrlHelper' hoặc tôi có một' HyperlinkModel' để biểu diễn một liên kết và lớp con tôi 'HyperlinkModelBuilder' của tôi và giả mạo logic xây dựng liên kết chính. –

Trả lời

4

Câu hỏi hay, và tôi nghĩ rằng câu trả lời là ít hoặc không có suy nghĩ đã được trao cho các tuyến đường thử nghiệm trong việc thiết kế phần này của khuôn khổ này. Có thể có những cách để kiểm tra các tuyến đường, nhưng chúng sẽ gián tiếp, không có giấy tờ và dễ bị phá vỡ khi một phiên bản mới của tàu MVC.

I have a blog post here về trải nghiệm của tôi về chủ đề. Tôi cũng đề nghị bạn cũng campaign for better testability in ASP vNext in the public issue tracker.

0

Trong thời gian chờ hàng ngày, một đồng nghiệp đề cập đến ông là thử nghiệm tích hợp qua máy chủ web trong bộ nhớ. Hấp dẫn, ông đã cho tôi thấy làm thế nào và tôi đã ngạc nhiên, đã học được điều gì đó :-)

Bạn có thể tạo một phiên bản HttpServer và đọc nó cấu hình của bạn và sau đó gọi cá thể máy chủ. Tôi đã không thử nó, nhưng tôi thấy không có lý do tại sao điều này sẽ không liệt kê các tuyến đường của bạn và mã cần cấu hình thích hợp tất cả sẽ làm việc.

Câu hỏi này SO có liên quan và có thể giúp đỡ trong việc làm thế nào để thiết lập:

How does the In-Memory HttpServer know which WebAPI project to host?

+0

Điều này có thể cắt nó để kiểm tra tích hợp, nhưng không phải để thử nghiệm đơn vị: quá trình thiết lập sẽ mất quá nhiều thời gian. – MarioDS

+0

Chúng ta có thể có một cuộc tranh luận triết học về việc kiểm tra đơn vị và cách ly, và bạn có thể có một số điểm công bằng, nhưng theo thời gian, trong thực tế, chúng tôi thấy rằng nó là tốt. –

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