首页  >  问答  >  正文

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

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

Then "I should be served coffee" do
  @machine.dispensed_drink.should == "coffee"
end
高洛峰高洛峰2759 天前802

全部回复(3)我来回复

  • 黄舟

    黄舟2017-04-24 09:11:29

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


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

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

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

    回复
    0
  • PHP中文网

    PHP中文网2017-04-24 09:11:29

    从用处来说,feature是用来做功能特性测试用例的,不仅仅是局限于Cucumber, RSpec也可以用这个,比如这里https://github.com/agilejzl/blog-eye/tree/master/spec/features,@nightire 配合gem 'rspec-example_steps'是可以有 Then 类的流程测试的。

    回复
    0
  • 大家讲道理

    大家讲道理2017-04-24 09:11:29

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

    回复
    0
  • 取消回复