我有这样的方法:
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));
但是这段代码无法编译,出现此错误:
参数1:无法从“
System.Tuple<int,int>
”转换为 'System.Tuple`2<int,int>
'
System.Tuple`2
向我推荐了Tuple课程背后的“匿名类型”,但我无法找到幕后发生的事情,以及如何解决这个问题。
编辑:对不起,我的不好,我刚刚发现我们的主项目设置为.NET 3.5,它使用自定义引用(System.ComponentModel.Composition)中的Tuple,测试项目使用的是.NET 4.0,它使用.NET的Tuple类。我不知道这个版本不一致如何解决我们的解决方案,但我不得不切换到另一种解决方法。而不是使用元组。
感谢您的帮助。
谢谢。
答案 0 :(得分:6)
var tupletoReturn=Tuple.Create<int, int>(51, 57);
ProductMock.Setup(u => u.GetQuantities(It.IsAny<Entry>(), It.IsAny<CartHelper>())).Returns(tupletoReturn);
如果适合我
public class MyClass
{
public virtual Tuple<int, int> GetQuantities(Entry entry, CartHelper cartHelper)
{
return new Tuple<int, int>(0, 0);
}
}
[TestFixture]
public class Test
{
[Test]
public void TestMethod()
{
var tupleToReturn = Tuple.Create<int, int>(10, 20);
Mock<MyClass> p = new Mock<MyClass>();
p.Setup(
u => u.GetQuantities(It.IsAny<Entry>(),
It.IsAny<CartHelper>()))
.Returns(tupleToReturn);
}
}