ruby-on-rails - 如何测试轮胎indexed_json结果?

标签 ruby-on-rails ruby ruby-on-rails-3 elasticsearch tire

我想测试我的搜索方法,但如何测试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

这是我收到的错误:

最佳答案

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

其次,在集成测试中,请确保在对测试数据进行索引后调用Tire::Index#refresh,以便立即可以搜索它们-默认延迟为1秒。

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

关于ruby-on-rails - 如何测试轮胎indexed_json结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14042459/

相关文章:

ruby-on-rails - 我如何在 Jekyll 中链接 if 语句?

ruby-on-rails - 如何检索序列化数据?

ruby-on-rails - 哈希数组插入另一个数组

ruby-on-rails - Ruby on Rails,重命名模型后未初始化的常量

ruby - 你如何将 shell 输出通过管道传递给 ruby​​ -e?

ruby-on-rails - 'compass watch' 是如何工作的/它是如何与 rails 一起使用的

ruby-on-rails - 如何让未登录的用户只访问受限页面一次?

html - 仅当选中复选框时才提交表单

ruby-on-rails - Rails 路由语法 - 从 rails 2 到 rails 3

java - java & ruby​​ 中的规则引擎(建议我一个好方法)