使用纸质跟踪在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 获取堆栈跟踪?