我有一個這樣的方法:如何在模擬中返回元組?
public virtual Tuple<int,int> GetQuantities(Entry entry, CartHelper cartHelper)
{
//something to do
return new Tuple<int, int>(minQuantity, maxQuantity);
}
和單元測試,我寫這篇文章模擬:
ProductMock
.Setup(
u => u.GetQuantities(It.IsAny<Entry>(),
It.IsAny<CartHelper>()))
.Returns(new Tuple<int,int>(minQuantity, maxQuantity));
但是這段代碼無法編譯,與此錯誤:
Argument 1: cannot convert from '
System.Tuple<int,int>
' to 'System.Tuple`2<int,int>
'
System.Tuple`2
向我暗示了Tuple類背後的「匿名類型」,但我無法找到幕後發生的事情,以及如何解決這個問題。編輯:對不起,我發現我們的主項目設置爲.NET 3.5,它使用自定義引用(System.ComponentModel.Composition)中的Tuple,並且測試項目使用.NET 4.0,它使用.NET的Tuple類。我不知道這個版本的不一致如何來到我們的解決方案,但我不得不切換到另一種解決方法。而不是使用Tuple。
謝謝你的幫助。
謝謝。
System.Tuple'2無關匿名類型,它只是表示名爲'Tuple'類有兩個通用的參數之一(在相同的方式如System.Collections.Generic.List'1,System.Collections.Generic.Dictionary'2等)。根據MSDN(http://msdn.microsoft.com/en-us/library/system.tuple.aspx),System.Tuple是一個靜態類,因此可能不存在System.Tuple的實例,並且因此你面對的錯誤至少令人困惑。希望這有助於某種方式。 – penartur 2012-02-15 10:25:48
你使用什麼模擬框架? – Archeg 2012-02-15 10:25:59
@Archeg:我們正在使用Moq – Vimvq1987 2012-02-15 10:26:40