2010-11-11 35 views
12


Tôi có phương pháp thử nghiệm đơn vị kiểm tra phương pháp hành động của bộ điều khiển. Phương thức hành động sử dụng tệp tài nguyên để nhận thông báo tĩnh."App_GlobalResources" không tải trong trường hợp kiểm tra Đơn vị

message = Resources.MyResource.MemberNotVerified; 

Tuy nhiên tại dòng này ném ngoại lệ là: -

". Không thể tải tập tin hoặc lắp ráp 'App_GlobalResources' hoặc một trong các phụ thuộc của nó Hệ thống không thể tìm thấy file quy định":" App_GlobalResources "System.IO.IOException {System.IO.FileNotFoundException}

Tôi đã thử đối chiếu toàn bộ tệp tài nguyên trong dự án Thử nghiệm của tôi, nhưng không thành công.
Bất kỳ bạn bè ý tưởng nào.

Trả lời

18

Đằng sau hậu trường, App_GlobalResources sử dụng HttpContext.GetGlobalResourceObject

Tất nhiên, không có HttpContext trong các thử nghiệm đơn vị (trừ khi bạn chế giễu nó).

Nếu bạn có khuynh hướng giả lập nó, Phil Haack có bài đăng phong nha trên đó here.

Có một giải pháp khác và đó là di chuyển tệp RESX ra khỏi thư mục thông thường.

Scott Allen có bài đăng trên số here.

+1

Đó là Scott Allen, chứ không phải Scott Guthrie :) – OdeToCode

+1

@OdeToCode - damn, edited - và tôi phải gỡ bỏ cú đấm của mình. :) – RPM1984

+1

Đầu tiên đã thử Simulator từ Haack, nhưng điều đó đã không làm việc cho tôi (đủ nhanh). Chắc chắn đọc bài của Scott! Kết luận: không sử dụng các thư mục đặc biệt (như App_GlobalResources) – Jowen

3

Cách tiếp cận khác là thay đổi loại tệp tài nguyên mà bạn tạo.

Tôi hy vọng có những cách khác của cài đặt nó lên nhưng chúng tôi thiết lập các cài đặt sau trong thuộc tính của file (kích chuột phải vào tập tin trong cửa sổ solution explorer và chọn Properties):

  • Build Action: Resource Embedded
  • copy to Output Directory: Đừng sao chép
  • Tuỳ chỉnh Tool: PublicResXFileCodeGenerator
  • Tài nguyên: Tài nguyên
+0

Ý tưởng hay, nhưng nó có một nhược điểm: Khi xuất bản ứng dụng web của bạn, tệp không còn được sao chép, gây ra các biểu thức '<% $ Tài nguyên: ...%>' thành không thành công. Bạn sẽ cần * theo cách thủ công * sao chép các tệp sau mỗi lần triển khai. – Heinzi

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