Rails Fixtures vs. Mocks - PullRequest
       34

Rails Fixtures vs. Mocks

7 голосов
/ 27 мая 2010

Я занимаюсь разработкой приложения на Rails, и я только что говорил со своим коллегой, что в наших тестах у нас есть смесь приспособлений и макетов, которые мы делаем с использованием cucumber и Rspec. Вопрос будет в следующем: когда следует использовать каждый из них?

1 Ответ

14 голосов
/ 27 мая 2010

Я бы использовал фиктивный объект, когда использование реального объекта неосуществимо / не нужно. Допустим, например, что вам нужно вызвать какой-нибудь удаленный API, такой как поиск адресов, через почтовый индекс. Возможно, вы захотите макетировать объект, чтобы вызовы к нему фактически не выполнялись при каждом запуске тестов. Есть и другие причины, такие как повышение скорости, запрос данных, которые меняются там, где вам нужен точный ответ или, возможно, его еще нет. Он позволяет вам тестировать вещи изолированно, так как вы можете определить, что при вызове этих методов для этого фиктивного объекта вы получите это обратно, и вам на самом деле не нужно запускать код, так как для этого теста это не важно.

Если вы используете приборы, у вас будет реальный объект, будут вызываться методы и т. Д., И выполняется их код, если, конечно, вы не заглушите методы, что является вопросом другого вопроса.

Надеюсь, это немного поможет. Есть хороший код (http://peepcode.com/products/rspec-mocks-and-models) на издевательствах и окурках, возможно, проверьте его.

...