使用solr和rspec的问题

时间:2013-12-26 13:58:36

标签: rspec autocomplete sunspot-rails

我有一个提示自动完成的方法。我正在使用Solr。

控制器中的方法如下:

def address_autocomplete
    search = Sunspot.search(Address) do
      fulltext params[:term]
      with(:user_id, current_user.id)
    end.results
    render json: search.map(&:address_with_id_to_string).to_json
  end

我正在为上述方法编写rspec。上述方法的测试如下所示:

require 'spec_helper'

describe AddressesController, type: :controller do
  describe Address, search: true do
    describe 'Search' do
      before(:each) do
        Sunspot.remove_all!
        Sunspot.commit
      end

      let!(:address) do
        create(:address,
               name: 'Michael Jackson',
               street: '100 spear st',
               postal_code: '94105',
               state_or_region: 'California',
               phone_number: '123-456-7890',
               city: 'San Francisco',
               user: user).tap { |b| b.index! }
      end

      describe 'GET #address_autocomplete' do
        let!(:user)  { create :user }
        it 'It prompts autocomplete of addresses' do
          xhr :get, address_autocomplete_addresses_path , term: 'Mic'
          debugger
          ActiveSupport::JSON.decode(response.body).to eq(address.address_with_id_to_string)
          //Check response is desired string or not
        end
      end
    end
  end
end

在上面的代码中,调试后我发现Sunspot无法在搜索数组中返回所需的响应。搜索数组为空白。我无法找到发生这种情况的原因。

1 个答案:

答案 0 :(得分:0)

问题不在于solr。我在集成测试文件夹中编写测试。这给我带来了很多问题。由于在集成测试文件夹中找不到设备助手,因此我也无法使用sign_in user。我将测试移到了单元测试中,现在它工作正常。