日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Cucumber入门之_World

發布時間:2025/6/15 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Cucumber入门之_World 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.?World

  World可以看做是Cucumber在運行每個場景之前所要創建的對象的實例,它不僅使得每一個Step Definition可以調用該實例的方法,而且使得為該項目定義的Ruby類是也可以調用該實例的方法。World在Cucumber中被定義為方法,接受可變參數mudules,以及一個proc:? 

1 def World(*world_modules, &proc)2
2 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 MyModule
2
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:Test
2 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$/ do
2 @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 Home
2
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 features
2 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的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。