我有一个代码,其中棋盘和棋子注入接口。 DiagonalDirections是枚举。到现在为止还挺好。我没有注入依赖项,也没有使用隐藏的依赖项。
WriteConsoleW
问题在于这行代码:
private void addToAllowedPositions(IChessboard chessboard, IPiece piece, DiagonalDirections direction)
{
int horizontalIndex = piece.Position.IndexHorizontal;
int verticalIndex = piece.Position.IndexVertical;
while (AreIndexesValid(setHorizontalIndexDirection(direction, ref horizontalIndex), setVerticalIndexDirection(direction, ref verticalIndex)))
{
IPosition currentPosition = new Position(horizontalIndex, verticalIndex);
IPiece currentPiece = chessboard.GetPiece(currentPosition);
if (currentPiece == null)
{
allowedPositions.Add(currentPosition);
}
else if (currentPiece.Color != piece.Color)
{
allowedPositions.Add(currentPosition);
break;
}
else break;
}
}
我真的不知道怎样才能在这里使用界面?每次都必须创建新职位。这是我唯一的依赖,我不知道如何隔离。当我想对这段代码进行单元测试时,我也遇到了问题。如果在Position类中有任何更改,则在现有单元测试中,此方法也会立即反映出来。
答案 0 :(得分:2)
您可以将工厂方法添加到IChessboard
界面:
IPosition currentPosition = chessboard.CreatePosition(horizontalIndex, verticalIndex);