ruby - rails裡面的feature檔是做什麼用的?平時用的多嗎?
高洛峰
高洛峰 2017-04-24 09:09:29
0
3
812

我看了一下,好像還是語義化的,非常神奇,這個特性是怎麼用的呢?

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

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回覆(3)
黄舟

這個不是 Rails 的東東,這是 Cucumber 的 steps definition,Cucumber 是一個 BDD 的驗收測試框架,你看到的這個部分就是測試斷言的一段程式碼。 Cucumber 採用的是一種接近自然語言的 DSL,所以語法很人性化。不過程式設計師本身不太追求 Cucumber 的風格,這個多用於商用化的測試腳本。程式設計師本身更偏好程式化的語法,適當的語意化就足夠了,在 Ruby 的世界裡,MiniTest 和 RSpec 這兩類測試框架更受歡迎一些。


補充,仔細想了一下,這也可能不是 Cucumber。我一開始認為是它是因為 Then 这个方法,但是 Cucumber 似乎是在 Scenario 里才用 Then 吧? (記憶模糊)

若說是 RSpec 之類,有 Then 嗎?也許是擴充了 DSL?有可能,所以武斷認為是 Cucumber 可能是錯的。

但無論如何,這肯定是測試程式碼,不屬於 Rails 本身。

洪涛

從用處來說,feature是用來做功能特性測試用例的,不只是局限於Cucumber, RSpec也可以用這個,例如這裡https://github.com/agilejzl/blog-eye/tree/master/ spec/features,@nightire 配合gem 'rspec-example_steps'是可以有Then 類別的流程測試的。

大家讲道理

就是cucumber的程式碼。 Then 位於.feature檔用,用來描述過程,或_steps.rb檔中用來解析過程。上面提到的明顯是後面一種。他位於../features/step_definitions/路徑下。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板