Принцип TDD FIRST
Я не понимаю, какПринцип TDD FIRST не соблюдается в следующем коде.
Вот мои заметки о первом принципе:
Быстрый: быстро запустить (подмножество) тестов (так как вы будете запускать их постоянно)независимый: никакие тесты не зависят от других, поэтому могут запускать любое подмножество в любом порядкеПовторяется: запустить N раз, получить тот же результат (чтобы помочь выявить ошибки и включить автоматизацию)Самоконтроль: тест может автоматически определить, пройден ли он (нет проверки человеком результатов)своевременно: написано примерно в то же время, что и тестируемый код (с TDD, написанным первым!)Вопрос викторины:
Салли хочет, чтобы ее сайт имел особый макет в первый вторник каждого месяца. У нее есть следующий контроллер и тестовый код:
# HomeController
def index
if Time.now.tuesday?
render 'special_index'
else
render 'index'
end
end
# HomeControllerSpec
it "should render special template on Tuesdays" do
get 'index'
if Time.now.tuesday?
response.should render_template('special_index')
else
response.should render_template('index')
end
end
Какой первый принцип не соблюдается?
БыстрыйнезависимыйПовторяетсяСамоконтрольсвоевременноЯ не уверен, какой ПЕРВЫЙ принцип не соблюдается:
БыстрыйКод кажется быстрым, потому что в его тестах нет ничего сложного.независимый: Тест не зависит от других тестов.Повторяется: Тест будет получать один и тот же результат каждый раз.'special_index'
если это вторник и'index'
если это не вторник.Самоконтроль: Тест может автоматически определить, пройден ли он.своевременно: И код, и тестовый код представлены здесь одновременно.я выбралсвоевременно на викторине, потому что тестовый код был представлен после кода контроллера. Но я неправильно понял вопрос, и, оглядываясь назад, это был не лучший выбор. Я не уверен, какой первый принцип здесь не соблюдается.