2015-08-28 46 views
1

我正在使用頁面工廠visit,on方法從ruby中的spec文件調用頁面對象類。我想知道如何參數化頁面對象類,使用頁面工廠方法從spec文件傳遞參數。如何創建和調用參數化的頁面對象類

我想記錄頁面對象類中的所有步驟信息。爲此,我使用記錄器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

:using_params存儲在類'@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 
+0

很高興看到您的快速和詳細的回覆。這兩個選項都有效。謝謝。 – user3581218

相關問題