我有我想要测试一些实例变量的控制作用的权值,这里是我的动作代码:rspec的没有得到实例VAR
def index
@users_list = get_response('accounts/by_tag/QuickcallAdmin')['users'].to_a
@credit_admin = [email protected]_list.select{|h| h['email'] == current_user.email}.blank?
@accounts_emails = Account.pluck(:email)
end
和规范代码:
describe 'GET #index' do
login_user
let(:account) {create(:account)}
it 'responds with 200' do
get :index, :format => :html
controller.instance_variable_set(:@users_list, [{"id"=>2, "email"=>"[email protected]", "tenant_id"=>1,"first_name"=>"valera","last_name"=>"rotari","phone_number"=>"89439438954", "tags"=>[{"name"=>"Program", "value"=>"my_company"}, {"name"=>"ProgramAdmin", "value"=>"new_program"}, {"name"=>"ProgramAdmin", "value"=>"new_program1"}, {"name"=>"QuickcallAdmin", "value"=>"q1"}, {"name"=>"CreditAdmin", "value"=>"q1"}]}])
expect(assigns(:credit_admin)).to eql(true)
expect(assigns(:accounts_emails)).to eql(["[email protected]"])
end
end
因此,您可以看到我尝试分配一些散列,我通常从api调用的响应中获取散列,然后查看credit_admin和account_emails vars是否具有正确的值。问题是,如果我在var分配后给某些put放入spec中,我看到了我的值,但是测试失败,因为信用管理变量为false并且预期为true。我得到了相同的代码,并把它放在轨道控制台为自己做测试,注意我使用相同的散列,并且我有正确的真实值。所以看起来好像@users_list var没有被赋值或者类似的东西。此外@account_email是空数组,但我有工厂创建的帐户,所以它应该有一些价值,它似乎是一个共同的问题,对他们两个
您在运行'index'后正在设置数据。 –
当我在index之前移动controller.instance_variable_set时,我将这个变量作为索引后的空数组 – maki