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

Ano*_*non 5 testing unit-testing ruby-on-rails

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

  test "the truth" do
    assert true
  end
Run Code Online (Sandbox Code Playgroud)

要么

  def the_truth
    assert true
  end
Run Code Online (Sandbox Code Playgroud)

看起来新的材料似乎是第一种方式,但我似乎无法找到原因.一个人比另一个人更受青睐吗?还有一个更正确吗?谢谢.

rya*_*anb 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
Run Code Online (Sandbox Code Playgroud)

此外,因为描述是一个字符串,它可以包含任何字符.随着def你在其中的字符限制就可以使用.