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