10

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

如果我只是把它放在规范中,我会收到一个找不到方法的错误。

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

我可以通过停止并重新启动守卫来解决这个问题,但这有点违背了目的。

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

4

1 回答 1

20

我不知道问题的确切根源,但我遇到了一些ActionDispatch::TestProcess我自己造成的奇怪问题。但是,您可以使用解决方法代替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您会发现它基本上只是调用了上面的代码。

于 2014-04-22T13:19:27.370 回答