使用纸质跟踪在rspec特征测试中没有whodunnit

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用纸质跟踪在rspec特征测试中没有whodunnit相关的知识,希望对你有一定的参考价值。

使用Paper Trail,我已经为我的应用程序构建了一个更改跟踪元素。在生产中很有效。一个方面是它使用'whodunnit'字段来提取用户名以显示哪个用户进行了更改。

我查看了文档(https://github.com/airblade/paper_trail),我看到了关于rspec和whodunnit的符号,但我不认为引用意味着'whodunnit'字段不可用,只是它在测试之间没有任何意义。

详细信息:我正在使用rspec的测试帮助程序,并且我已经使用了rspec功能测试设置

"..., versioning: true do"

此外,在运行测试时的调试中,我可以看到事件/更改的所有其他字段都存在并保存在数据库中,只有whodunnit没有被保存。有趣的是,我只是在测试中遇到问题;在生产中没有问题,在那里工作正常,只是在测试中不起作用。当然,我有

before_action :set_paper_trail_whodunnit

设置(在我的应用程序控制器中,不是特定的控制器,但我移动它只是为了看它是否有所作为,并且毫不奇怪,它没有)。

编辑:我应该提到我检查确认在测试运行时测试数据库中有一个列'whodunnit'。此外,控制器中还有一个方法current_user(正如预期的那样,否则它在生产中不起作用)。

答案

我从PaperTrail issue on Github发现了这个

除非您在运行查询之前运行控制器和/或集成规范,否则很可能没有填充whodunnit列。

我最终在我的规格中手动设置我的whodunnit

PaperTrail.controller_info[:whodunnit] = user.id

哪种感觉有点失败的目的。但是我在单位规格和特征规格中运行它,所以我认为这是唯一的方法。

以上是关于使用纸质跟踪在rspec特征测试中没有whodunnit的主要内容,如果未能解决你的问题,请参考以下文章

如何让 rspec-2 提供与测试失败相关的完整跟踪?

当方法被意外调用的次数超过指定次数时,有没有办法从 rspec 获取堆栈跟踪?

RSpec 中的测试模块

为啥在 Matlab 中没有使用 KLT 跟踪来跟踪特征?

有没有办法使用 rspec-serverspec 在部署期间测试是不是安装了特定版本的 java 或 tomcat?

如何使用 RSpec 测试 ActionText?