TDD FIRST原则

use*_*408 23 tdd

我不明白如何在以下代码中遵守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
Run Code Online (Sandbox Code Playgroud)

没有遵循什么第一原则?

  1. 快速
  2. 独立
  3. 重复
  4. 自检
  5. 及时

我不确定哪个FIRST原则没有被遵守:

  • 快速:代码似乎很快,因为它的测试并不复杂.
  • 独立:测试不依赖于其他测试.
  • 可重复:每次测试都会得到相同的结果.'special_index'如果它是星期二,'index'如果它不是星期二.
  • 自检:测试可以自动检测是否通过.
  • 及时:代码和测试代码同时显示在此处.

我在测验中选择了Timely,因为测试代码是在控制器代码之后呈现的.但我提出的问题是错误的,回想起来,这不是一个好的选择.我不确定这里没有遵循哪个FIRST原则.

Cla*_*edi 37

Repeatable不是每天都是星期二:)如果你在星期一进行这个测试你会得到一个结果,如果你在星期二运行它,不同的一个.

  • @Renan:不,如果一个人可以注入一个日期并且在它认为那是什么日子时确认它做了正确的事情,那将是坚持的.此时,您可以全面测试,无论当前日期如何,而不是等待一周并测试每一天. (16认同)