rspec 可以在同一测试中更改并使用 innodb 全文索引吗?

And*_*rew 6 mysql innodb rspec ruby-on-rails

我有一个奇怪的具体问题。假设我在 Rails 项目中有这个表:

create_table "documents", force: true do |t|
   t.text    "tags"
end
add_index "documents", ["tags"], name: "index_documents_on_tags", type: :fulltext
Run Code Online (Sandbox Code Playgroud)

我有一个集成测试,它创建了一些Document具有不同标签组合的实例,我尝试测试的方法应该通过全文搜索返回。不幸的是,事实证明 InnoDB 在当前事务结束之前不会重建其全文索引,这意味着我的搜索结果为空。

如果我在固定装置中构建测试数据(例如,提前在 rspec 用于每个测试的事务之外),那么一切都可以正常工作,但是有什么方法可以让我调整数据并在同一测试中对其运行搜索?

geo*_*ane 0

我也有同样的问题,但没有找到很好的解决方案。您可以做的一件事是使用 DatabaseCleaner 这样的工具,并将这些测试的策略从“事务”更改为“截断”。