【问题标题】:Is this ruby-on-rails rspec code good practice?这是 ruby​​-on-rails rspec 代码的好习惯吗?
【发布时间】:2013-09-12 21:20:29
【问题描述】:

此代码正在运行,但我想检查它是否可靠/良好实践/惯用。 背景:我正在关注 Michael Hartl 的 rails 教程,并且正在研究 8.5(第 8 章的练习),将测试与实现分离。

在 user_pages_spec.rb 我不喜欢代码

expect { click_button submit }.not_to change(User, :count)

因为change(User, :count) 看起来有点像黑客。所以在 spec/support/utilities.rb 我写道:

def create_user
    change(User, :count)
end

我将 user_pages_spec.rb 中的行替换为

expect { click_button submit }.not_to create_user

这样合理吗?

【问题讨论】:

  • 如果你以后要为订单和书籍编写测试怎么办?你会创建类似的方法,create_ordercreate_book?恕我直言,这是不必要的复杂性/ LOC 增加。
  • 除非到处使用create_user 方法,否则我认为它不足以帮助理解。如果是这样,请考虑一个自定义匹配器,它无论如何都要上课,或者从测试或科目的课程中推断出课程。
  • 你觉得下面的答案怎么样?

标签: ruby-on-rails rspec railstutorial.org


【解决方案1】:

这样做几乎只是“包装”语法,我认为它并没有真正增加代码。您之前的代码还不错,但也许您也可以考虑这样做:

expect { click_button submit }.to_not change{User.count}

【讨论】:

  • 更改{User.count} 不起作用,但我很满意原来的代码现在很好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-06-27
  • 2011-06-11
  • 2021-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-05
相关资源
最近更新 更多