0

我想测试我的搜索方法,但如何测试to_indexed_json结果。

这是我的测试:

describe Search do
  before do
    Question.index.delete
    Question.tire.create_elasticsearch_index
    app = create :app, name: "Marketing", id: 76
    @question1 = create :question, content: "Some super question?", app: app
    @question2 = create :question, content: "Some extra question?", app: app
  end

  describe "#results" do
    it "returns matched results" do
      Search.new("Some", \[76\]).results.should == \[@question1, @question2\]
    end
  end
end

这是我收到的错误:

4

1 回答 1

2

首先,您并没有真正to_indexed_json在发布的代码中进行测试——您正在测试对搜索结果的一些期望。这很好,实际上是更合理的做法:),但仍然是另一回事。

其次,在集成测试中,一定要Tire::Index#refresh在索引测试数据后调用,这样它们就可以立即被搜索——默认延迟是 1 秒。

第三,您正在代码中创建一些测试模型,然后期望返回这些确切的对象。要使轮胎的行为如此,请使用:load => true选项(从数据库中加载模型),或者不要设置对对象等价的期望,而是测试例如。您的模型的某些属性(例如content)。

于 2012-12-27T07:41:00.687 回答