Нет причин, по которым вы не можете делать и то, и другое. Я считаю, что основанное на поведении или взаимодействии тестирование с использованием mocks экономит много стандартного, когда все, что вы хотите сделать, это протестировать поведение. С написанными от руки заглушками вы получите много логических значений, указывающих, что был вызван метод, который вы должны затем проверить. Это излишне, хрупко и довольно сложно.
С другой стороны, иногда вы хотите проверить состояние. Например, если поведение тестируемого объекта должно меняться в зависимости от состояния кандидата на насмешку или заглушку, и требуется определенное сложное взаимодействие.
В этом случае могут помешать фальшивые фреймворки, а рукописная заглушка значительно упрощает управление состоянием для целей теста.
Итак, суть в том, что они не являются взаимоисключающими - используйте то, что имеет смысл для данного теста. Поскольку каждый тест небольшой и тестирует только одну вещь (насколько это разумно), вы не должны попадать в ситуацию, когда вы начинаете с насмешливой и вдруг обнаруживаете, что вам нужно приложить немало усилий, чтобы вернуть вещи обратно на заглушку.