Khi tạo kiểm tra đơn vị cho một lớp sử dụng HttpContext.Current.Cache
class, tôi gặp lỗi khi sử dụng NUnit. Các chức năng là cơ bản - kiểm tra xem một mục trong bộ nhớ cache, và nếu không, tạo ra nó và đặt nó trong:Kiểm tra đơn vị HttpContext.Current.Cache hoặc các phương thức phía máy chủ khác trong C#?
if (HttpContext.Current.Cache["Some_Key"] == null) {
myObject = new Object();
HttpContext.Current.Cache.Insert("Some_Key", myObject);
}
else {
myObject = HttpContext.Current.Cache.Get("Some_Key");
}
Khi gọi này từ một thử nghiệm đơn vị, nó không thành công với ít NullReferenceException
khi gặp phải các Cache
đầu tiên hàng. Trong Java, tôi sẽ sử dụng Cactus để kiểm tra mã phía máy chủ. Có một công cụ tương tự tôi có thể sử dụng cho mã C#? This SO question đề cập đến khung mock - đây có phải là cách duy nhất tôi có thể kiểm tra các phương pháp này không? Có một công cụ tương tự để chạy thử nghiệm cho C#?
Ngoài ra, tôi không kiểm tra nếu Cache
là null vì tôi không muốn viết mã đặc biệt cho thử nghiệm đơn vị và giả sử nó sẽ luôn hợp lệ khi chạy trên máy chủ. Đây có phải là hợp lệ, hoặc tôi nên thêm kiểm tra null xung quanh bộ nhớ cache?
Bạn có thể thử hầu hết mọi thứ với HttpContextBase, nhưng thuộc tính Cache không nằm trong số đó. HttpContextBase.Cache là loại System.Web.Caching.Cache được niêm phong, không sử dụng được trong các bài kiểm tra đơn vị và không thể nhại được ... – chris166