Rails:如何测试执行mysql查询的辅助方法

时间:2016-12-20 11:47:22

标签: mysql ruby-on-rails rspec

我在帮助程序中有一个方法,它根据存储在cookie中的标记和代码来确定用户是否具有特定标记(enabled)。

def user_enabled?
  Code.joins({tags: :user}).
    where(code: cookies[:user_code]).
    where(users: {enabled: true})
    exists?
end

基本上,标签与用户和带标签的代码相关联。

我不确定如何在我的规范中重新创建它,以便查询执行所需的所有记录。到目前为止,我有:

it 'returns true when enabled is checked' do
  tag = create(:tag, user: create(:user, enabled: true))
  Code.create(code: 'enabled', tags: [tag])
  cookies[:user_code] = 'enabled'
  expect(user_enabled?).to be_truthy
end

但是这会失败,我不确定我错过了什么。

1 个答案:

答案 0 :(得分:0)

以下是我为解决这个问题所采取的措施:

Context 'some context'
  let!(:tag) { create(:tag, user: create(:user)) }
  let!(:code) { create(:code, code: 'enabled', tags: [tag]) }

  it 'returns true when enabled is checked' do
    cookies[:user_code] = 'enabled'
    expect(user_enabled?).to be_truthy
  end
end