0
我有一个类位置,我想测试方法CreatePosition。方法是这样的:动态返回参数的模拟对象设置方法
public Position CreatePosition(int horizontalIndex, int verticalIndex)
{
return new Position(horizontalIndex, verticalIndex);
}
接口IPosition:
public interface IPosition
{
char HorizontalPosition { get; }
int VerticalPosition { get; }
int IndexHorizontal { get; }
int IndexVertical { get; }
Position CreatePosition(int horizontalIndex, int verticalIndex);
}
方法CreatePosition用在这里,它是动态的 - 每对参数也创造了新的位置:
private void AddToAllowedPositions(IPosition positionCreator)
{
int horizontalIndex = piece.Position.IndexHorizontal;
int verticalIndex = piece.Position.IndexVertical;
while(IndexesAreValid(horizontalIndex, verticalIndex)
{
IPosition currentPosition = positionCreator.CreatePosition(horizontalIndex, verticalIndex);
allowedPosition.Add(currentPosition);
}
}
我的问题是我不知道如何伪造CreatePosition方法。
我创建Mock<IPosition>
这样的:
Mock<IPosition> positionCreator = new Mock<IPosition>();
positionCreator.Setup(positionCreator.Object.CreatePosition(?, ?)).Returns(??);
我想假冒该方法,因此将接受动态参数和返回动态结果,就像真正的位置做。是否有可能做到这一点?
感谢您的回答。有没有办法返回Mock对象而不是新的Position?像模拟? –
FrenkyB
否,Returns方法描述了在测试期间调用实际方法('CreatePosition')时将返回什么,所以它必须接收与方法的返回类型相同类型的参数 –
还有一个问题,因为它。 IsAny是返回int的泛型方法,它不是一个整数。 –
FrenkyB