【问题标题】:Should I write rails tests with the def or test keyword?我应该使用 def 或 test 关键字编写 Rails 测试吗?
【发布时间】:2009-07-31 17:02:15
【问题描述】:

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

  test "the truth" do
    assert true
  end

  def the_truth
    assert true
  end

似乎较新的材料以第一种方式编写测试,但我似乎找不到原因。一个比另一个更受青睐吗?还有一个是正确的吗?谢谢。

【问题讨论】:

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


    【解决方案1】:

    近年来,测试名称已经从简短的缩写名称转变为更长的类似句子的测试名称。这部分是由于 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,您可以使用的字符受到限制。

    【讨论】:

    • test 方法是 Rspec 或其他库的一部分吗?
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      正如 Mike Trpcic 建议的那样,您应该查看 RSpec 和 Cucumber。我想补充一点,您还应该看看:

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-10-05
          • 1970-01-01
          • 2011-07-06
          • 2015-04-21
          相关资源
          最近更新 更多