我有我想要測試一些實例變量的控制作用的權值,這裏是我的動作代碼: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