2010-09-30 31 views
1

我正在潛入ASP.NET MVC 2中,並且正在通過一個教程,我在單元測試中遇到了與模板方法有關的錯誤。錯誤代碼......爲什麼我的C#模板方法抱怨接受特定類型?

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?) 

,而是因爲我所有這些都是新鮮事物,我沒有看到我想念的東西。

  1. 有沒有人看到這個問題?
  2. 有人能向我解釋如何ShouldEqualCount
一個成員函數

非常感謝您的幫助!如果需要更多代碼,請告訴我。

回答

1

我認識到這一點......這是來自史蒂夫·桑德森的書?

如果我註釋掉using聲明ShouldEqual聲明的名稱空間,我可以重現此錯誤。

在你有

var displayedProducts = (IList<Product>)result.ViewData.Model; 
displayedProducts.Count.ShouldEqual(2); 

你可以檢查並確保您擁有該ShouldEqual是在命名空間using聲明文件?

+0

不錯!這正是它來自的書。無論如何,感謝帖子,我注意到我沒有包含「ShouldEqual」的命名空間的「使用」語句,因爲這兩個代碼塊存在於相同的命名空間(SportsStore.UnitTests)中,但它們存在兩個不同的文件。我不知道如何處理這個。你的想法?再次感謝! – BeachRunnerFred 2010-09-30 19:42:09

+0

關於我的頭頂,我不記得項目的結構。與其他兩行代碼中的「ShouldEqual」是否在不同的項目中?如果是,請嘗試將該項目的引用添加到定義了「ShouldEqual」的項目中。 – 2010-09-30 20:07:04

+0

嗯,這很奇怪。我剛剛發現你在書中的位置,並且它們在同一個項目中,應該位於同一個命名空間中......我沒有看到代碼和書中代碼的任何區別。您可以從apress站點下載代碼(請參閱本頁面左下角的「書籍資源」:http://www.apress.com/book/downloadfile/4609)並嘗試構建它?它對我來說很好,所以或許看看這些代碼,你的項目將幫助你弄清楚什麼是不同的。 – 2010-09-30 20:20:42

相關問題