rails里面的feature文件是干什么用的?平时用的多吗?

我看了一下,好像还是语义化的,非常神奇,这个特性是怎么用的呢?

Then "I should be served coffee" do
  @machine.dispensed_drink.should == "coffee"
end
阅读 6.4k
3 个回答

这个不是 Rails 的东东,这是 Cucumber 的 steps definition,Cucumber 是一个 BDD 的验收测试框架,你看到的这个部分就是测试断言的一段代码。Cucumber 采用的是一种接近自然语言的 DSL,所以语法很人性化。不过程序员本身不太追求 Cucumber 的风格,这个多用于商用化的测试脚本。程序员本身更偏爱程序化的语法,适当的语义化就足够了,在 Ruby 的世界里,MiniTest 和 RSpec 这两类测试框架更受欢迎一些。


补充,仔细想了一下,这也可能不是 Cucumber。我一开始认为是它是因为 Then 这个方法,但是 Cucumber 似乎是在 Scenario 里才用 Then 吧?(记忆模糊)

若说是 RSpec 之类,有 Then 吗?也许是扩展了 DSL?有可能,所以武断认为是 Cucumber 可能是错的。

但无论如何,这肯定是测试代码,不属于 Rails 本身。

就是cucumber的代码。Then 位于.feature文件用,用来描述过程,或者_steps.rb文件中用来解析过程。上面提到的明显是后面一种。他位于../features/step_definitions/路径下。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进