2008-11-27 33 views
6

Tôi đang cố gắng tạo ra các khung nhìn trong các bài kiểm tra đơn vị nhưng tôi không thể đi xung quanh VirtualPathProvider còn thiếu. Hầu hết các viewengine sử dụng lớp cơ sở VirtualPathProviderViewEngine nhận được nhà cung cấp từ HostingEnvironment hiện tại.Làm cách nào để tạo các lượt xem trong các thử nghiệm đơn vị asp.net-mvc?

protected VirtualPathProvider VirtualPathProvider { 
    get { 
     if (_vpp == null) { 
      _vpp = HostingEnvironment.VirtualPathProvider; 
     } 
     return _vpp; 
    } 
    set { 
     _vpp = value; 
    } 
} 

Trong các bài kiểm tra đơn vị không có HostingMôi trường, ngay cả khi tôi tạo bài kiểm tra không có VirtualPathProvider hiện tại.

Làm cách nào để khắc phục sự cố này? Tôi có phải tạo một FakeWebFormViewEngine tùy chỉnh không?

+0

Bạn đã bao giờ tìm thấy câu trả lời cho điều này chưa? Tôi chống lại cùng một vấn đề :-) –

+0

tháng 10 năm 2012. Ngay cả với tất cả các nhận xét mà đun sôi xuống để "bạn đang thử nghiệm nó sai!", Người ta vẫn có thể quan tâm đến thực sự thử nghiệm cơ chế dựa trên VirtualPathProvider. Vì vậy, chỉ tò mò: bất cứ ai đã có? –

Trả lời

0

Tôi cũng đã cố thực hiện điều này. Thật không may, nó không chỉ là VirtualPathProvider (VPP) mà là vấn đề. VPP được sử dụng để ánh xạ chế độ xem hoặc xem một phần đến một đường dẫn vật lý để xác định sự tồn tại của tệp. Thật không may, các ViewContext kết thúc với virtualpath, không phải là đường dẫn vật lý, vì vậy khi xem được kết xuất Builder sử dụng tài sản của HostingEvnironment mà không tồn tại.

Nếu bạn đang sử dụng phiên bản Visual Studio có Thử nghiệm, thì bạn có thể sử dụng Kiểm tra đơn vị web. Điều này sẽ cho phép bạn sử dụng trình duyệt để gọi URL và sau đó phân tích cú pháp phản hồi để kiểm tra các giá trị.

0

Hãy tha thứ cho tôi nếu điều này nghe có vẻ không biết gì, nhưng mục đích tạo lượt xem là gì? Tôi có thể thiếu một cái gì đó, nhưng trọng tâm chính của các bài kiểm tra đơn vị là "thử nghiệm các đơn vị". Trong một ứng dụng ASP.NET MVC được thiết lập đúng, mã cần được kiểm tra nằm trong bộ điều khiển và bên dưới. Trong thực tế, tôi sẽ nói, nếu phát triển đúng cách, nó là dưới đây.

Kiểm tra chế độ xem là thử nghiệm chấp nhận của người dùng. Tôi thấy không có gì sai với việc tự động hóa điều này, bằng bất kỳ phương tiện nào, nhưng tôi không chắc chắn đây là một cái gì đó phải được thực hiện với một bài kiểm tra đơn vị.

Tôi có thiếu gì đó không?

+0

Tôi đồng ý, nhưng có một số tình huống mà một bài kiểm tra đơn vị là hữu ích tôi nghĩ. Có các công cụ xem cho phép "viết kịch bản" bên trong khung nhìn (tia lửa), một số thử nghiệm đơn giản để thử nghiệm các chức năng này sẽ là tuyệt vời tôi nghĩ. Đừng làm cho tôi sai, tôi không muốn so sánh mã HTML được tạo, nó giống như "biểu mẫu đăng nhập có thể nhìn thấy?" đồ đạc. –

2

Có các tính năng trong Hệ thống nhóm VS 2010 cho Kiểm tra chấp nhận phù hợp với những gì bạn đang cố gắng thực hiện. Như đã đề cập bởi Gregory A Beamer Unit test cho MVC được thực hiện cho bộ điều khiển. Bạn cũng có thể kiểm tra Mô hình tùy thuộc vào cách bạn triển khai mô hình của mình.

Đây là nơi có rất nhiều tranh cãi. Một số người nhìn vào mô hình như các thực thể kinh doanh nơi tôi nhìn vào chúng như là các biểu diễn của mô hình cụ thể cho View. Thêm mô hình xem. Vì không có chức năng thực sự trong mô hình của tôi nên tôi không phải thử nghiệm nó. Tôi kiểm tra DAL của tôi, Business Logic Layer bên ngoài MVC. MVC thực sự là tất cả các phần của lớp trình bày. Đó là phân loại bản trình bày của bạn chứ không phải ứng dụng của bạn. Bạn vẫn lớp ứng dụng của bạn.

Theo như kiểm tra Đơn vị, bộ điều khiển là nơi bạn kiểm tra. Bạn có thể kiểm tra mô hình của mình nếu có các phương pháp yêu cầu thử nghiệm. Đối với quan điểm họ chấp nhận thử nghiệm bởi người dùng hoặc thông qua tự động hóa như Watin.

0

Bạn có thể thử Ivonna để tích hợp (và ở một mức độ nào đó, đơn vị) kiểm tra Chế độ xem của bạn.

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