Ruby on rails 范围的Rspec+单元测试

Ruby on rails 范围的Rspec+单元测试,ruby-on-rails,rspec,capybara,rspec-rails,Ruby On Rails,Rspec,Capybara,Rspec Rails,我不知道为什么会失败 更新: expected: "SELECT `renewals`.* FROM `renewals` LEFT JOIN customers on renewals.customer_id = customers.id LEFT JOIN agents on customers.agent_id = agents.id WHERE agents.id = 103 and customers.status_id = 4 AND renewals.customer_id IN

我不知道为什么会失败

更新:

expected: "SELECT `renewals`.* FROM `renewals` LEFT JOIN customers on renewals.customer_id = customers.id LEFT JOIN agents on customers.agent_id = agents.id WHERE agents.id = 103 and customers.status_id = 4 AND renewals.customer_id IN ()"
     got: "SELECT `renewals`.* FROM `renewals` LEFT JOIN customers ON renewals.customer_id = customers.id LEFT JOIN agents ON customers.agent_id = agents.id WHERE agents.id = 103 and customers.status_id = 4 AND renewals.customer_id IN ()"
(compared using ==)

请帮助我

您是否使用文字比较?您可以发布您正在使用的测试吗。@liamneensarmsoup check updates由于您正在进行文字比较,您需要在查询中大写“on”字符串。将“on”更改为“on”后出现同样的问题。我得到了相同的预期结果,但不知道为什么失败
  it "for_agent_renewal_between" do
    from          = Time.now - 10
    to            = Time.now + 10
    agent         = Agent.first
    renewals      = Renewal.where("ends_at BETWEEN '#{from.strftime('%Y-%m-%d')}' AND '#{to.strftime('%Y-%m-%d')}'")
    customer_ids  = renewals.collect{|renewal| renewal.customer_id}.uniq.join(",")
    expect(Renewal.for_agent_renewal_between(agent, Time.now - 10, Time.now + 10).to_sql).to eq(Renewal.joins("LEFT JOIN customers on renewals.customer_id = customers.id LEFT JOIN agents on customers.agent_id = agents.id WHERE agents.id = #{agent.id} and customers.status_id = 4 AND renewals.customer_id IN (#{customer_ids})").to_sql)
  end