ruby-on-rails – 弹性搜索轮胎:模拟ES的好策略

我在我网站的主页上使用ElasticSearch.在我的验收测试中,当用户登录时,他被重定向到主页.

但是在测试中使用ES是非常昂贵的(需要创建和删除索引),所以我不想在每次用户通过主页时都这样做.

只有当测试有一些元数据时,我才想做实际的ES搜索

config.before(:each) do
    if example.Metadata[:elastic]
        Model.create_elasticsearch_index
    end
end

scenario "Results should be ordered by distance",:elastic do
    # tests...
end

所以我需要“嘲笑”搜索,而不是使用ES,当测试没有:弹性元数据.

什么是实现这个的好方法

解决方法

我可能会使用 FakeWeb来选择性地启用和禁用实时HTTP呼叫.

模拟对ES的电话:

FakeWeb.allow_net_connect = false
FakeWeb.register_uri(:any,%r|\Ahttp://localhost:9200|,:body => "{}")

允许呼叫ES:

FakeWeb.clean_registry
FakeWeb.allow_net_connect = true

允许和禁止网络连接在这里并不是严格要求的,因为FakeWeb的模拟可以优先于实际的调用,但是我发现当有些事情发生了未锁定的HTTP调用时,我们发现它有助于在测试中抛出异常.

您可以扩展此功能以使用测试元数据来根据需要启用或禁用mock.

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...