我有特點文件api_extensions.rb /支持:黃瓜:支持文件中定義的實例變量沒有被傳遞到步驟定義
require 'rubygems'
require 'mechanize'
require 'json'
module ApiExtensions
def initialize
@agent = Mechanize.new
@api_header = {'Accept' => 'application/json', 'Content-Type' => 'application/json'}
@api_uris = {
'the list of campuses' => 'http://example.com/servicehosts/campus.svc',
'the list of settings' => 'http://example.com/servicehosts/setting.svc',
'login' => 'http://example.com/servicehosts/Student.svc/login',
}
end
end
World(ApiExtensions)
不過,我仍然得到錯誤undefined method '[]' for nil:NilClass (NoMethodError)
上的第二行步定義文件當我運行黃瓜:
When /^I attempt to log in using a valid username and password$/ do
api_uri = @api_uris['login']
request_body = {:username => "[email protected]", :password => "testsecret"}.to_json
@page = @agent.post(api_uri, request_body, @api_header)
end
爲什麼實例變量@api_uris
沒有顯示出來,即使我已經加入了模塊的世界?另外,我已經測試了通過向該文件添加一些檢測工具來執行該模塊,因此@api_uris
正在設置中,它僅用於我的步驟定義。
最後,如果我明確指出include ApiExtensions
作爲我的步驟定義文件的第一行,它可以正常工作。但我認爲呼籲World(ApiExtensions)
應該自動將我的模塊包含在所有步驟定義文件中。
謝謝!