我在我网站的主页上使用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.
原文地址:https://www.jb51.cc/ruby/265558.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。