我去年开发了一个 插件,想验证它在最新版本的 Discourse 上是否仍然可用。在重新初始化我的开发环境(之前遇到了数据库迁移问题)后,我能够手动验证该插件仍然可以正常工作。然而,当我运行我的 规范测试(这些测试去年编写时是通过的)时,出现了以下错误:
Failure/Error: DB.test_transaction = ActiveRecord::Base.connection.current_transaction
NoMethodError:
undefined method `test_transaction=' for #<MiniSqlMultisiteConnection:0x00007fb8b3815c40>
我本地还安装了 https://meta.discourse.org/t/discourse-footnote/84533,运行那些测试时也会遇到同样的错误。
有人能建议如何修复我的环境或测试,使它们能在当前版本的 Discourse 上通过吗?
riking
(Kane York)
3
确保在从 discourse 源代码目录运行 bin/rspec 时包含 LOAD_PLUGINS=1(插件仓库需从 plugins/ 文件夹符号链接)。
1 个赞
我在 discourse 目录下运行以下命令:
d/rake plugin:spec['discourse-ruby']
@riking 我没有显式包含 LOAD_PLUGINS=1,但它似乎仍然生效了(我猜是因为我执行了 plugin:spec)。执行该命令后的第一行是:
LOAD_PLUGINS=1 /usr/local/bin/ruby -S rspec ./plugins/discourse-ruby/spec/markdown_ruby_spec.rb --profile
如果我像下面这样显式包含它,我会得到相同的错误:
d/rake plugin:spec['discourse-ruby'] LOAD_PLUGINS=1
tgxworld
(Alan Tan)
5
看起来 d/rake 脚本默认使用 development 环境,因此您需要运行以下命令:RAILS_ENV=test d/rake plugin:spec['discourse-ruby']
3 个赞