С моей точки зрения, насмешка должна использоваться для того, чтобы смоделировать какое-то поведение, от которого мы зависим, но не намерены тестировать. Следовательно:
В: Я что-то упустил?
- Нет, вы ничего не упускаете, MOQ не хватает способности высмеивать частное поведение.
В: Можете ли вы протестировать внутренние методы, используя Moq?
- Если результат приватного поведения виден публично, то да, вы можете протестировать внутренний метод, но не из-за Moq вы можете его протестировать. Я хотел бы подчеркнуть, что Mock - это не способность к тестированию, а способность к подобному поведению, которое мы не тестируем, а зависим от него.
C: Основное преимущество TDD заключается в том, что ваш код легко изменить. Если вы начнете тестировать внутренние компоненты, тогда код станет жестким и его трудно изменить
- Я не согласен с этим комментарием по двум основным причинам:
1: Это не заблуждение новичка, поскольку TDD - это не только способность кодировать быстрее, но и код лучшего качества. Следовательно, чем больше тестов мы можем сделать, тем лучше.
2: Это не делает код более сложным для изменения, если вы можете как-то проверить внутренние методы.