Vim*_*987 2 .net c# unit-testing tuples moq
我有一个像这样的方法:
public virtual Tuple<int,int> GetQuantities(Entry entry, CartHelper cartHelper)
{
//something to do
return new Tuple<int, int>(minQuantity, maxQuantity);
}
Run Code Online (Sandbox Code Playgroud)
并对它进行单元测试,我写这个模拟:
ProductMock
.Setup(
u => u.GetQuantities(It.IsAny<Entry>(),
It.IsAny<CartHelper>()))
.Returns(new Tuple<int,int>(minQuantity, maxQuantity));
Run Code Online (Sandbox Code Playgroud)
但是此代码无法编译,出现此错误:
参数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类.我不知道这个版本不一致如何解决我们的解决方案,但我不得不切换到另一种解决方法.而不是使用元组.
谢谢您的帮助.
谢谢.
var tupletoReturn=Tuple.Create<int, int>(51, 57);
ProductMock.Setup(u => u.GetQuantities(It.IsAny<Entry>(), It.IsAny<CartHelper>())).Returns(tupletoReturn);
Run Code Online (Sandbox Code Playgroud)
如果适合我
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);
}
}
Run Code Online (Sandbox Code Playgroud)