我正在深入研究ASP.NET MVC 2,我正在阅读一篇教程,我在单元测试中遇到了与模板方法相关的错误。错误的代码是......
var displayedProducts = (IList<Product>)result.ViewData.Model;
displayedProducts.Count.ShouldEqual(2);
,ShouldEqual
的方法定义是......
public static void ShouldEqual<T>(this T actualValue, T expectedValue)
{
Assert.AreEqual(expectedValue, actualValue);
}
,错误是......
'int' does not contain a definition for 'ShouldEqual' and no extension method 'ShouldEqual' accepting a first argument of type 'int' could be found (are you missing a using directive or an assembly reference?)
但是因为我对这一切都很陌生,所以我看不出我错过了什么。
ShouldEqual
如何成为Count
非常感谢你的帮助!如果需要更多代码,请告诉我。
答案 0 :(得分:1)
ShouldEqual仅是编译器技巧。它是一个独立的函数(静态类(CLASSNAME)和方法)。编译器用...替换调用
CLASSNAME.ShouldEqual<int>(displayedProducts.Count, 2);
See here for more information:http://msdn.microsoft.com/en-us/library/bb383977.aspx
答案 1 :(得分:1)
我认识到这一点......这是史蒂夫桑德森的书吗?
如果我注释掉声明using
的命名空间的ShouldEqual
语句,我可以重现此错误。
在您拥有的文件中
var displayedProducts = (IList<Product>)result.ViewData.Model;
displayedProducts.Count.ShouldEqual(2);
您可以检查并确保using
所在的命名空间有ShouldEqual
语句吗?