Я бы порекомендовал держаться подальше от насмешливых рамок, пока вы не поймете взаимодействия, которые здесь происходят.
IMO, лучше учиться с помощью созданных вручную тестовых двойников, а затем перейти к фальшивому фреймворку. Мои рассуждения:
Насмешливые рамки абстрагируют от того, что на самом деле происходит; легче понять взаимодействия, если вам нужно явно создать свои зависимости, а затем выполнить тесты в отладчике.
Легко использовать фреймворки. Если вы катитесь самостоятельно, когда вы учитесь, вы с большей вероятностью поймете разницу между разными типами тестов. Если вы переходите прямо к макету, легко использовать макеты, когда вам нужны заглушки, и наоборот - есть большая разница.
Думайте об этом так: тестируемый класс - это фокус. Вы создаете его экземпляр, вызываете его методы и затем утверждаете, что результат правильный. Если у тестируемого класса есть зависимости (например, что-то требуется в конструкторе), вы удовлетворяете эти зависимости, используя либо A: реальные классы, либо B: test удваивается.
Причина, по которой мы используем удвоение теста, заключается в том, что он изолирует тестируемый класс, а это означает, что вы можете использовать его код более контролируемым образом.
например. если у вас есть класс, содержащий сетевой объект, вы не можете протестировать процедуры обработки ошибок собственного класса, которые обнаруживают мертвые соединения, если вы вынуждены использовать конкретный объект сетевого соединения. Вместо этого вы внедряете фальшивый объект соединения и говорите ему, чтобы он генерировал исключение при вызове его метода «SendBytes».
т.е. В каждом тесте зависимости тестируемого класса создаются специально для использования определенного фрагмента кода.