相应的step文件需要做相应的修改:
复制代码
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
复制代码
运行cucumber,一个新的浏览器被打开,显示结果与(三)中相同。
(六)加入角色用户
既然是行为驱动,既然是模拟用户实际操作,那么直接对Page对象进行操作也显得不够了,于是我们引入了角色用户User对象,对于拥有多种用户角色的网站来说特别实用。加入User对象之后,step文件中不再出现对Page对象的直接引用,而是在User对象的行为方法中进行引用,定义User对象如下(user.rb):
复制代码
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
复制代码
feature文件保持不变,在step文件用User代替Page:
复制代码
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