【发布时间】:2016-12-20 11:47:21
【问题描述】:
我在帮助程序中有一个方法,它根据存储在 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
但这会返回 false,我不确定我错过了什么。
【问题讨论】:
-
您确定
create正在创建记录吗?试试create!而不是create -
是的,只是确保了这一点,它正在创造记录。
-
尝试在您的测试中一一注释掉
where条件,看看它是否在任何情况下都返回true。
标签: mysql ruby-on-rails rspec