Cucumber入门之_World
1.?World:
World可以看做是Cucumber在運行每個場景之前所要創建的對象的實例,它不僅使得每一個Step Definition可以調用該實例的方法,而且使得為該項目定義的Ruby類是也可以調用該實例的方法。World在Cucumber中被定義為方法,接受可變參數mudules,以及一個proc:?
1 def World(*world_modules, &proc)22 RbDsl.build_rb_world_factory(world_modules, proc)
3 end
下面看一個我自己寫的小示例:
目錄結構如下:
?
env.rb:該文件通常用于準備環境變量, 這里我加載了三個文件。
1 require 'rubygems'2 require 'watir-webdriver'
3 require 'rspec'
?
?world.rb
1 module MyModule2
3 def self.foo(name)
4 puts "MyModule_FOO: #{name} "
5 end
6
7 def boo(key)
8 puts "MyModule_BOO: #{key}!"
9 end
10
11 end
12
13 World(MyModule)
? 在該文件中定義了一個module,在該module中定義了兩個方法:一個實例方法boo, 一個類方法foo。最后把定義的這個模塊傳遞給World. 這樣以來我們在運行feature的時候,在其它地方(step_definitions或自定義ruby類文件)就可以調用這個module里面的方法了。
?
test.feature?
1 Feature:Test2 In order to test how to use world
3 as a learner
4 I want to practice to use world
5
6 Scenario: practice to use hooks
7 Given try to use the cucumber keyword
在這個feature文件中我定義的比較簡單,只定義了一個scenario,且該scenario中只有一個步驟Given。因為這個小例子是為了說明World的用法,所以這里不對feature做過多討論。
?
test.rb
1 Given /^try to use the cucumber keyword$/ do2 @page = Home.new
3 @page.visit!
4 MyModule.foo("*step_definitions*")
5 end
在這個step_definitions文件中,是對feature文件中的具體操作實現。因為我們都知道feature文件中只是做了一些描述,具體的執行是放到step_ definitions下面的文件里面的。在這個文件中我new了一個Home文件(看下面Home文件的定義),并且調用了在Home文件中定義的visit!方法。最后一行,我直接調用了在world.rb文件中定義的module的方法foo(因為foo是一個類方法,所以可以直接調用。而boo方法是實例方法,調用前必須實例化一個對象)。
?
Home.rb
1 class Home2
3 def visit!
4 MyModule.foo("*Home_page_module*")
5 end
6
7 end
這個文件是我為該項目自己定義的一個ruby類文件,里面定義了一個visit!方法,該方法也調用了world.rb文件中的類方法foo。
根據文章一開頭提到的,World不僅使得Step Definition可以調用該實例的方法,而且使得為該項目定義的Ruby類也可以調用該實例的方法。如此那么程序正常應該會分別輸出這兩句話。
?
結果:
1 C:\Ruby192\bin\ruby.exe -e $stdout.sync=true;$stderr.sync=true;load($0=ARGV.shift) C:\Ruby192\bin/cucumber D:/cucumber/mycucumber/features/test.feature --format Teamcity::Cucumber::Formatter --expand --color -r features2 Testing started at 上午10:37 ...
3 MyModule_FOO: *Home_page_module*
4 MyModule_FOO: *step_definitions*
5 1 scenario (1 passed)
6 1 step (1 passed)
7 0m0.000s
結果中3,4行和我們預期的一致。
?
?本文轉自賀滿博客園博客,原文鏈接:http://www.cnblogs.com/puresoul/archive/2012/03/05/2380022.html,如需轉載請自行聯系原作者。
總結
以上是生活随笔為你收集整理的Cucumber入门之_World的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux系统基础调优
- 下一篇: 大数据打造智慧城市