我应该用def或test关键字编写rails测试吗?

时间:2009-07-31 17:02:15

标签: ruby-on-rails unit-testing testing

这似乎是一个简单的问题,但我无法在任何地方找到答案。我注意到,一般来说,Ruby on Rails应用程序中的测试可以写成:

  test "the truth" do
    assert true
  end

  def the_truth
    assert true
  end

似乎较新的材料在第一种方式上写测试,但我似乎无法找到原因。一个人比另一个人更受青睐吗?还有一个更正确吗?感谢。

4 个答案:

答案 0 :(得分:8)

近年来,从简短的缩写测试名称到更长的,类似句子的测试名称已经发生了变化。这部分是由于RSpec的普及以及测试是规范并且应该是描述性的概念。

如果您更喜欢描述性测试名称,我强烈建议您使用test方法。我发现它更具可读性。

test "should not be able to login with invalid password" do
  #...
end

def_should_not_be_able_to_login_with_invalid_password
  #...
end

另外,因为描述是一个字符串,所以它可以包含任何字符。使用def,您可以使用哪些字符。

答案 1 :(得分:2)

我相信第一种方法是从Rails 2.2开始实现的。 据我所知,它只是提高了代码的可读性(因为def可以是任何函数,而测试只在测试用例中使用)。 祝你好运!

答案 2 :(得分:0)

Mike Trpcic建议您查看RSpec和Cucumber。我想补充一点,你还应该看看:

Shoulda是一个宏框架,用于为模型/控制器编写简洁的单元测试,而第二个是替换夹具。

答案 3 :(得分:-1)

我建议您使用RSpecCucumber进行测试。我用它们来测试我的所有应用程序。 RSpec用于测试模型和控制器,Cucumber测试视图(通过包含的Webrat功能)。