首頁  >  問答  >  主體

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

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

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

全部回覆(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
  • 取消回覆