5

Tôi có một phương pháp mở rộng cho một lớp helper trong một dự án MVC4:Làm thế nào để kiểm tra ModelMetadata.FromLambdaExpression trong MVC?

public static class ExtensionMethods 
{ 

    public static object Value<TModel, TProperty>(this Expression<Func<TModel, TProperty>> expression, ViewDataDictionary<TModel> viewData) 
    { 
     return ModelMetadata.FromLambdaExpression(expression, viewData).Model; 
    } 

} 

này làm điều gì đó rất đơn giản một cách đó là bất cứ điều gì nhưng đơn giản.

Vì vậy, làm thế nào tốt nhất có thể được kiểm tra đơn vị này? Nó sẽ là thích hợp hơn để tránh chế nhạo phương pháp tĩnh hoặc sử dụng tiêm phụ thuộc, nhưng tôi cởi mở nếu đây thực sự là những phương pháp khả thi duy nhất trong trường hợp này.

Đây có phải là một thiết kế không hoàn thiện có thể được cải thiện để có thể tuân theo kiểm tra đơn vị hơn không?

+0

được chức năng này phải làm gì đây? – Suhas

+0

Nó trả về giá trị của thuộc tính được xác định bởi một biểu thức lambda được chuyển vào một trình trợ giúp html. –

+0

Nếu bạn biết nó không phải là một cách đơn giản, tại sao làm theo cách đó? – JustinKaz

Trả lời

3

Đây thực sự là thiết kế thiếu sót và có lẽ là phổ biến. Phương pháp chữ ký đúng đòi hỏi trình tự tham số để được chuyển:

public static object Value<TModel, TProperty>(this ViewDataDictionary<TModel> viewData, Expression<Func<TModel, TProperty>> expression) 
{ 
    return ModelMetadata.FromLambdaExpression(expression, viewData).Model; 
} 

này sau đó có thể được gọi từ các bài kiểm tra đơn vị:

Expression<Func<Model, string>> expression = (t => t.PropertyName); 
ExtensionMethods.Value<Model, string>(viewData, expression)); 
Các vấn đề liên quan