我无法弄清楚存根无法在此来源中创建的原因。
我试图测试if语句中的逻辑。
if user.nil? || company.nil?
是条件。为此,我将规范定义如下。
def introduce
accountant_request = AccountantRequest.with_introduce_request_status(:requested).find(params[:id])
company = Company.find_by(id: accountant_request.company_id)
user = User.find_by(id: company.try(:primary_user_id))
if user.nil? || company.nil?
redirect_to admin_accountant_requests_path, alert: 'There is no company or user' and return
end
这是规范。我的期望是Company.find_by(...)返回nil。
shared_examples 'post #introduce' do
subject(:response) { post 'introduce', params_for_introduce }
context 'error by user.nil? || company.nil?' do
it 'fail' do
allow_any_instance_of(Company).to receive(:find_by).and_return(nil)
expect(response).to have_http_status 302
expect(response).to redirect_to introduce_error_redirect_path2
end
end
不幸的是,company = Company.find_by(id: accountant_request.company_id)
返回的现有记录不是零。所以我无法在内部检查if语句。
出了什么问题?在这种情况下我该怎么办? 任何想法都受到欢迎。
答案 0 :(得分:1)
allow_any_instance_of
应该用于公司类的实例,但是这里会在类本身上调用find_by
尝试这个(在执行测试主题之前,即请求):
allow(Company).to receive(:find_by) { nil }