我正在使用页面工厂visit
,on
方法从ruby中的spec文件调用页面对象类。我想知道如何参数化页面对象类,使用页面工厂方法从spec文件传递参数。
我想在页面对象类中记录所有步骤信息。为此,我使用logger gem创建了一个登录spec文件。我需要将日志对象作为输入参数传递给页面类来捕获数据。这是我用来执行此操作的代码。
调用网页类的规范文件:
require './lib/pages/Test_page'
file="logs/uniusecase_#{@ncs_server['build_no']}_#{@ncs_server['test_type']}_#{time}.log"
$log=Logger.new(file)
describe 'testcase-1',:sanity do
visit Testpage, using_params: {logger: $log} do |page|
end
end
页面对象类:
class Testpage
include PageObject
log = "<%=params[:logger]%>"
def goto
log ("test msg-1")
end
def testmethod()
log("test msg -2")
end
end
我在执行时收到"NameError: undefined local variable or method `log'
错误消息。有人可以帮我这么做吗?
答案 0 :(得分:0)
:using_params
存储在班级&#39; @merged_params
变量。你可以这样做:
self.class.instance_variable_get(:@merged_params)
所以你的方法看起来像:
def goto
logger = self.class.instance_variable_get(:@merged_params)[:logger]
logger("test msg-1")
end
但是,如果要在全局变量中定义记录器,则它已经可用于页面对象类(即,您不需要传递它)。换句话说,你可以简单地做:
def goto
$log ("test msg-1")
end