2012-05-05 7 views
6

Nhấn một chút trở ngại khi thử nghiệm mô-đun Nancy từ dự án thử nghiệm. mã kiểm tra của tôi trông khá chuẩn:Dự án thử nghiệm Nancy không thể tìm thấy số lượt xem

[TestMethod] 
public void Should_return_status_ok_when_route_exists() 
{ 
    // Given 
    var bootstrapper = new DefaultNancyBootstrapper(); 
    var browser = new Browser(bootstrapper); 

    // When 
    var result = browser.Get("/", with => 
    { 
     with.HttpRequest(); 
    }); 

    // Then 
    Assert.AreEqual(result.StatusCode, HttpStatusCode.OK); 
} 

tôi nhận được một không có khả năng xác định vị trí quan điểm ngoại lệ khi mô-đun của tôi cố gắng để làm cho xem. Nếu tôi chạy dự án thông thường thì module sẽ tìm thấy khung nhìn. Nó chỉ khi được gọi từ dự án thử nghiệm mà mô-đun không thể tìm thấy nó.

Trả lời

8

Vấn đề là các chế độ xem không ở bất kỳ đâu trong dự án thử nghiệm của bạn và vì IRootPathProvider đang trỏ sai địa điểm, nên không thể tìm thấy chúng. Hai cách để làm được việc này là sử dụng ConfigurableBootstrapper (đó là nhiều hay ít giống như mặc định một, nhưng khả năng để ghi đè lên những thứ khi khởi tạo) và nói với nó để sử dụng nhà cung cấp đường dẫn gốc tùy chỉnh của bạn

var bootstrapper = new ConfigurableBootstrapper(with => { 
    with.RootPathProvider<CustomRootPathProvider>(); 
}); 

Sau đó, bạn sẽ triển khai public class CustomRootPathProvider : IRootPathProvider và trỏ nó vào đúng vị trí.

Giải pháp thứ hai sẽ được thiết lập quan điểm của bạn để luôn sao chép vào thư mục đầu ra, tôi tin rằng cũng nên giải quyết nó

+1

Cũng lưu ý rằng bạn cần phải có động cơ chánh kiến ​​được cài đặt trong các dự án thử nghiệm. Cshtml views sẽ không được tìm thấy nếu không có công cụ Razor view được cài đặt, ví dụ. – theDmi

+2

Ngoài ra hãy xem triển khai thực hiện tốt đẹp này của IRootPathProvider: http://www.jefclaes.be/2012/06/making-my-first-nancyfx-test-pass.html –

+0

Bằng cách đặt chế độ xem thành "Luôn sao chép" của tôi đã có thể thực hiện một thử nghiệm đơn giản. Không cần phải thực hiện ngay cả một nhà cung cấp đường dẫn gốc. Cảm ơn! – dimiguel