相應(yīng)的step文件需要做相應(yīng)的修改:
復(fù)制代碼
1require File.join(File.dirname(__FILE__), "google-page")
2
3Given /^I amongoogle home page$/do
4@page = GooglePage.new
5end
6
7When/^I searchfor'([^"]*)'$/ do |search_text|
8@page.search search_text
9end
10
11Then /^I should be able to view the search result of '([^"]*)'$/do|result_text|
12@page.has_text result_text
13end
復(fù)制代碼
運(yùn)行cucumber,一個新的瀏覽器被打開,顯示結(jié)果與(三)中相同。
(六)加入角色用戶
既然是行為驅(qū)動,既然是模擬用戶實(shí)際操作,那么直接對Page對象進(jìn)行操作也顯得不夠了,于是我們引入了角色用戶User對象,對于擁有多種用戶角色的網(wǎng)站來說特別實(shí)用。加入User對象之后,step文件中不再出現(xiàn)對Page對象的直接引用,而是在User對象的行為方法中進(jìn)行引用,定義User對象如下(user.rb):
復(fù)制代碼
1require File.join(File.dirname(__FILE__), "google-page")
2
3class User
4def initialize
5@browser = Watir::Browser.new :chrome
6end
7
8def visit_google
9@page = GooglePage.new(@browser)
10end
11
12def search_text text
13@page.search text
14end
15
16def assert_text_exist text
17@page.has_text text
18end
復(fù)制代碼
feature文件保持不變,在step文件用User代替Page:
復(fù)制代碼
1require File.join(File.dirname(__FILE__), "user")
2
3Given /^I amongoogle home page$/do
4@user = User.new
5@user.visit_google
6end
7
8When/^I searchfor'([^"]*)'$/ do |search_text|
9@user.search_text search_text
10end
11
12Then /^I should be able to view the search result of '([^"]*)'$/do|result_text|
13@user.assert_text_exist result_text
14end