Ответ 1
Это не Repeatable
, так как не каждый день есть вторник:) Если вы запустите этот тест в понедельник, вы получите один результат, если вы запустите его во вторник, другой.
Я не понимаю, как принцип TDD FIRST не соблюдается в следующем коде.
Это мои заметки о принципе 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
Какой принцип FIRST не соблюдается?
- Fast
- Независимый
- Повторяющиеся
- Самоконтроль
- Своевременное
Я не уверен, какой принцип FIRST не соблюдается:
'special_index'
если он вторник и 'index'
, если он не во вторник.Я выбрал Своевременный в викторине, потому что тестовый код был представлен после кода контроллера. Но у меня вопрос неправильный, и в ретроспективе это был не очень хороший выбор. Я не уверен, какой принцип FIRST здесь не соблюдается.
Это не Repeatable
, так как не каждый день есть вторник:) Если вы запустите этот тест в понедельник, вы получите один результат, если вы запустите его во вторник, другой.
Независимый и повторяемый
Он не является независимым от даты, и тогда он сможет запустить повтор, но технически вы получите тот же результат, потому что вы выбираете
Правильный способ проведения теста для HomeController относительно концепции FIRST - изменение времени до этапа оценки
Да, путаница частично имеет причину, что F.I.R.S.T. принцип не является полным или достаточно кратким в отношении "я". На курсах, которые я посещал, этот принцип назывался F.I.I.R.S.T.
Второй "я" означает "Изолированный". Тест выше не зависит от других тестов, но не изолирован.