이 질문은 following topic의 계속 부분입니다. (읽을 필요는 없습니다.) TDD로 구현하고있는 테트리스 게임 일뿐입니다.args 생성자없이 TDD가있는 설정자없이 façade 클래스를 테스트하는 방법은 무엇입니까?
그래서 여기에 문제가 있습니다. 나는 수락 테스트를 받았습니다.
[TestMethod]
public void I_Can_Query_Any_Piece_Of_The_Board_For_A_Color() {
StandardTetris tetris = new StandardTetris();
for (int y = 0; y < tetris.BoardSize.Height; ++y) {
for (int x = 0; x < tetris.BoardSize.Width; ++x) {
Color color = tetris.GetColorAt(x, y);
Assert.IsTrue(
color == Color.Cyan ||
color == Color.Blue ||
color == Color.Orange ||
color == Color.Yellow ||
color == Color.Green ||
color == Color.Violet ||
color == Color.Red
);
}
}
}
내가 좋아하는 거라고 내가
public Color GetColorAt(int x, int y)
{
return Color.Orange;
}
다음 시험에 StandardTetris
public Color GetColorAt(int x, int y)
{
return Color.Black;
}
에했던 방법을 변경했다 : 나는 그들 중 하나에 다음 테스트를 정의 몇 가지 픽셀을 몇 가지 색상으로 설정 한 다음, 내가 놓은 위치에서 색상이 맞는지 확인했습니다 (이제는 생각하니 수락 테스트가 아닙니다). 어떻게하면됩니까? StandardTetris는 보드 조각에 대한 어떤 종류의 setter도 제공하지 않습니다 (그렇게하지 않아도됩니다!). 기본 생성자가 아닌 다른 생성자를 갖고 싶지 않습니다. 그럼 내가 어떻게 조롱 할 수 있니?
이 StandardTetris
의 현재 코드입니다 : 내가 삽입 할 IOC의 라이브러리를 사용했을
[TestMethod]
public void Set_A_Blue_2x2_Square_On_Origin_And_Query_It_Sucessfully() {
Board board = new Board();
board.SetColorAt(0, 0, Color.Blue);
board.SetColorAt(0, 1, Color.Blue);
board.SetColorAt(1, 0, Color.Blue);
board.SetColorAt(1, 1, Color.Blue);
Tetris tetris = new Tetris(board);
Assert.AreEqual(Color.Blue, tetris.GetColorAt(0, 0));
Assert.AreEqual(Color.Blue, tetris.GetColorAt(1, 0));
Assert.AreEqual(Color.Blue, tetris.GetColorAt(0, 1));
Assert.AreEqual(Color.Blue, tetris.GetColorAt(1, 1));
}
계단식 생성자를 사용할 수 있습니까? 소비 클래스가 기본 구현에 대해 걱정하지 않기를 바란다면 자주이 작업을 수행하지만 책임을 분리하고 디자인을 깨끗하고 유지 보수 할 수 있기를 원합니다. – Lunivore
흠, 제 아이디어는 그것들을 사용할 필요가 없었습니다. 그것이 유일한 방법이라면 :(. 내 주요 문제는 여기에 "우리는"내가 StandardTetris 안에 게시판 클래스를 집어 넣어야한다는 것을 알고 있지만, TDD (그리고 setter가없는 방법)) –