开发中如何防止黄瓜特性测试影响elasticsearch索引?

How to prevent cucumber feature tests from affecting elasticsearch index in development?

我对在 rails 应用程序中使用 elasticsearch 还很陌生,我正在使用耐嚼的 gem 来实现它。

我已经设置好一切并正常工作,我认为由于 Chewy.settings = {prefix: 'test'} 配置,耐嚼的 gem 正在为测试和开发环境制作单独的索引。

我的 RSpec 测试 运行 很好,不会在开发中造成任何问题,但是当我 运行 我的功能测试时,我在搜索时遇到开发错误。

undefined method `image_url' for nil:NilClass

我相信这是因为 elasticsearch 索引被测试覆盖,然后记录已从测试数据库中删除,因此返回 nil。

但是我不确定为什么在开发中会发生这种情况,因为我认为开发和测试环境具有单独的 elasticsearch 索引。

要解决这个问题,我必须 运行 rake chewy:reset:all

我不太熟悉 elasticsearch 的功能,所以希望任何人能稍微了解幕后发生的事情以及如何为测试环境设置 elasticsearch 索引。

听起来您需要将 developmenttest 分开,以便它们使用不同的端口。 Chewy docs中给出的示例可能是您需要的:

# config/chewy.yml
# separate environment configs
test:
  host: 'localhost:9250'
  prefix: 'test'
development:
  host: 'localhost:9200'

希望对您有所帮助!

我将 所有 环境的索引前缀硬编码为 "test",因此索引在测试和开发环境中的名称相同。

正确的配置是

Chewy.settings = {prefix: Rails.env}

这将在测试环境中为索引添加 "Test" 前缀,在开发环境中为索引添加 "Development" 前缀。