include ActionDispatch :: TestProcess可以防止Guard正确重新加载

时间:2013-08-13 06:38:52

标签: ruby-on-rails file-upload rspec guard

我正在使用fixture_file_upload来测试我的rspecs中的一些文件上传

如果我把它放在规范中,我会发现找不到方法的错误。

为了让它工作,我在我的规范中添加了包含ActionDispatch :: TestProcess,但是我发现自从我这样做以来,当我进行更改时,该守卫没有正确地重新加载spec文件,它继续运行针对旧版本的测试文件。

我可以通过停止和重新启动守卫来解决这个问题,但它有点失败了。

如何防止这种情况发生?我应该如何引用fixture_file_upload或者我应该在哪里放置include?

1 个答案:

答案 0 :(得分:13)

我不知道问题的确切来源,但我自己有ActionDispatch::TestProcess引起的一些奇怪问题。但是,您可以使用a workaround代替fixture_file_upload,这意味着您可以删除有问题的include

如果您有这样的事情(例如在工厂中):

include ActionDispatch::TestProcess

fixture_file_upload('spec/factories/test.png', 'image/png')

您可以将其替换为:

Rack::Test::UploadedFile.new('spec/factories/test.png', 'image/png')

如果您查看fixture_file_upload的来源,您会看到它基本上只是调用上面的代码。