使用 RSpec 测试 searchkick

2024-01-20

我想创建用于在我的实践管理应用程序中搜索患者的功能规范。

到目前为止,我已经在网上搜索并遵循了以下建议的解决方案:

http://bitsandbit.es/post/11295134047/unit-testing-with-tire-and-elastic-search#disqus_thread http://bitsandbit.es/post/11295134047/unit-testing-with-tire-and-elastic-search#disqus_thread

and

https://github.com/karmi/tire/wiki/Integration-Testing-Rails-Models-with-Tire https://github.com/karmi/tire/wiki/Integration-Testing-Rails-Models-with-Tire

这两篇文章都建议为 ElasticSearch 和 Tire 配置spec_helper.rb。由于 Searchkick 基于 Tire,因此我将解决方案应用于 Patient 类,这是我使用 Searchkick 的唯一模型。

但是,我的每个配置都收到“NoMethodError”。 例如,使用以下代码:

规格助手.rb

RSpec.configure do |config| do
  .
  .
  .

  config.before :each do
    Patient.index.delete
    Patient.create_elasticsearch_index
  end

  config.before :all do
   Patient.index_name('test' + Patient.model_name.plural)
  end
end

我收到以下错误:

Failure/Error: Unable to find matching line from backtrace
 NoMethodError:
   undefined method `index_name' 

方法“index”和“create_elasticsearch_index”也会发生同样的情况

我对 RoR 相当陌生,老实说,我不确定我在这里可能做错了什么,除非假设我可以在 Searchkick 上使用 Tire 解决方案。因此,非常感谢任何帮助!


Searchkick 需要更好的测试文档,但要点如下:

Searchkick 在每个环境中自动使用不同的索引名称,因此无需进行任何设置。跑步Patient.searchkick_index.name在控制台中确认这一点。

您只需调用即可,而不是删除并重新创建索引reindex.

RSpec.configure do |config| do
  config.before :each do
    Patient.reindex
  end
end

最后,插入数据后,调用Patient.searchkick_index.refresh打电话之前Patient.search。这告诉 Elasticsearch 立即更新索引(而不是在刷新间隔之后更新,默认为 1 秒)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 RSpec 测试 searchkick 的相关文章

随机推荐

  • F#,主格或结构类型

    F 有主格类型系统还是结构类型系统 我知道 OCaml 是结构类型的 尽管 F 似乎并非如此 这是正确的吗 F 是主格 您可以通过一些奇异的机制执行一些结构技巧 但该语言的类型系统主要是主格的
  • 使用 ESC 键清除 Angular / AngularUI 中的输入文本字段

    在我的 Angular 应用程序的几个地方 我需要使用 ESC 键清除用户的输入 问题是 我不知道如何使用文本输入字段 文本区域清除正常 看看这个小提琴 jsFiddle演示问题 http jsfiddle net aGpNf 188 Bi
  • 在textview中显示计时器包含android中的天,小时,分钟和秒

    我正在使用倒计时器在文本视图中显示剩余时间 它工作正常 下面是代码 public class MyCount extends CountDownTimer Context mContext public MyCount long milli
  • 如何在文本框中选择文本,并将插入符号置于所选内容的开头?

    我正在使用一个System Windows Forms TextBox 可以使用键盘来选择文本 将插入符号置于start选择的内容 按住 Shift 并将插入符号向左移动 我想以编程方式做同样的事情 例如 假设我有一个文本框 其中包含文本
  • 如何在调试器中使用 Perl 5.10 功能?

    我无法在 Perl 调试器中评估 现代 Perl 代码 在调试文件中的代码时它可以正常工作 但在提示符下却不行 最小的例子 Activating 5 10 features with E it works perl E say x x Ca
  • 为什么要为请求缓存控制 HTTP 标头?

    我最近经历了this https developer mozilla org en US docs Web HTTP Headers Cache Control文章 它说不仅是响应 请求还可以包括cache control选项 虽然我理解
  • 低基数字段的索引效率

    例如 postgres 数据库中有一个字段 可以为空 它存储枚举值 并且该枚举只有两个值 A B 现在我的所有选择查询在该字段上都有 where 子句 我有一个问题 向该字段添加索引将是一个好方法 否则它不会提高任何性能 因为每行包含 A
  • 如何在 php 上打印非空值[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我对 PHP 很陌生 现在我正在尝试打印非空值 我有以下 php 代码 它会抛出所有值 包括 null 和非 null 在我的网站中 我只
  • 如何检查 JBoss 是否正在 Unix 服务器上运行?

    我下面有一个脚本 我想根据它是否可以在进程列表中找到 jboss 进程来回显 jboss 未运行 或 jboss 正在运行 但是 当我关闭 Jboss 时 它仍然执行 Else 条件并显示 jboss 正在运行 如果我手动执行 pgrep
  • 无法在 C# 中打开 Excel 文件

    我的项目中有以下 C 函数 该函数应该打开并返回现有的 Excel 工作簿对象 Application excelApp private Workbook OpenXL string path string filename try if
  • Rails 4.1.2 - to_param 转义斜杠(并破坏应用程序)

    我在我的应用程序中使用to param创建自定义 URL 此自定义路径包含斜杠 class Machine lt ActiveRecord Base def to param MachinePrettyPath show path self
  • NHibernate二级缓存在没有缓存配置的情况下缓存实体

    我已经在会话工厂上配置了二级缓存 但是对于 POCO 实体 我没有启用缓存 我使用 Fluent NHibernate 来配置 SessionFactory 和 POCO 实体 这是会话工厂的配置 var cfg Fluently Conf
  • GWT 中的简单超链接?

    这应该很简单 但不知怎的 我找不到在 GWT 中创建简单超链接的方法 基本上 我想在用户单击某些内容时加载另一个页面 超级链接 http google web toolkit googlecode com svn javadoc 1 6 c
  • 在 Haskell 中使用递归方案解决变更问题

    我试图从中理解组织形态关于递归方案的博客 https blog sumtypeofway com posts recursion schemes part 4 html 当我运行示例来解决问题时遇到问题改变问题 https en wikip
  • 如何 - 具有超时和取消功能的多个异步任务

    我想触发几个任务 同时为它们设置超时 这个想法是收集那些争分夺秒的任务的结果 并取消 甚至忽略 其他任务 我尝试使用扩展方法 WithCancellation 如所解释的here https stackoverflow com a 2568
  • Ember-数据递归 hasMany 关联

    有人使用 ember data 来建模数据树吗 我认为它会是这样的 Node DS Model extend children DS hasMany Node parent DS belongsTo Node 然而 我无法让这个工作正常进行
  • 如何制作一个更安全的 C++ 变体访问者,类似于 switch 语句?

    许多人使用 C 17 boost 变体的模式看起来与 switch 语句非常相似 例如 来自 cppreference com 的片段 http en cppreference com w cpp utility variant visit
  • 3 月 14 日不是 86400 秒长吗?

    在我的 Web 应用程序中 我让用户在简单的文本框中输入日期 该输入 当然是经过清理之后 通过 strtotime 运行 并向其中添加 86399 以使该时间戳成为所写入的当天的结束时间 11 59 59 这是出于截止日期的目的 因此 如果
  • 为什么 jQuery 模板 {{each}} 标签与 jQuery $.each 对 JavaScript 字符串数组的解释不同?

    强制性的jsFiddle 示例 http jsfiddle net patridge wuEyp 当我通过 jQuery 运行字符串数组时 each函数 我得到了我所期望的 each abc 123 def 456 function i v
  • 使用 RSpec 测试 searchkick

    我想创建用于在我的实践管理应用程序中搜索患者的功能规范 到目前为止 我已经在网上搜索并遵循了以下建议的解决方案 http bitsandbit es post 11295134047 unit testing with tire and e