我看了一下,好像还是语义化的,非常神奇,这个特性是怎么用的呢?
Then "I should be served coffee" do
@machine.dispensed_drink.should == "coffee"
end
黄舟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 本身。
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 類別的流程測試的。
大家讲道理2017-04-24 09:11:29
就是cucumber的程式碼。 Then 位於.feature檔用,用來描述過程,或_steps.rb檔中用來解析過程。上面提到的明顯是後面一種。他位於../features/step_definitions/路徑下。