-6ren">
gpt4 book ai didi

ruby-on-rails - 如何将哈希变量与 rspec capybara 测试规范一起使用

转载 作者:行者123 更新时间:2023-12-02 21:47:09 26 4
gpt4 key购买 nike

我的规范文件:

require 'spec_helper'

describe "State Contracts page" do
@state_data = {
:state_slug => 'Alabama',
:state_name => 'California'
}

before(:each) { visit state_path(:state=>"#{@state_data[:state_slug]}" )}

it 'should have header' do
page.should have_content("#{@state_data[:state_name]} Contracts")
end

# show statistics specification for State Contract
it "should have #{@state_data[:state_name]} Statistics details" do
page.should have_content("#{@state_data[:state_name]} Statistics")
page.should have_content('Total Obligated Amount')
page.should have_content('Total Transactions')
page.should have_content('Total Contractors')
page.should have_content('Total Contract Recipients')
page.should have_content('Total Offers')
end
end

# show State link
it "should have visible #{@state_data[:state_name]} Links" do
page.should have_content("#{@state_data[:state_name]} Links")
assert_equal(true, find_link("Agencies in #{@state_data[:state_name]}").visible?)
assert_equal(true, find_link("Contractors in "{@state_data[:state_name]}").visible?)
assert_equal(true, find_link("Contracts in #{@state_data[:state_name]}").visible?)
end
end

当我运行测试后,我得到了下一个错误:

undefined method `[]' for nil class for "#{@state_data[:state_name]}"

我认为我正在插入哈希变量,但现在不正确。

最佳答案

如果没有在 before 中的某处声明实例变量,则不能在 it block 中使用实例变量。将 @state_data 包裹在 before(:each) block 中,它应该可以工作。

它看起来像下面这样:

before do
@state_data = {
:state_slug => 'Alabama',
:state_name => 'California'
}
visit state_path(:state=>"#{@state_data[:state_slug]}"
end

我的理解是,使用实例变量被认为是一种反模式,您应该考虑使用 let()subject() 来代替

使用 let() 会将其更改为:

let(:state_data) do
{
:state_slug => 'Alabama',
:state_name => 'California'
}
end

before { visit state_path(:state=>"#{state_data[:state_slug]}" }

it 'should have header' do
page.should have_content("#{state_data[:state_name]} Contracts")
end

关于ruby-on-rails - 如何将哈希变量与 rspec capybara 测试规范一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19333678/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com