在rspec中存档File.open

时间:2014-03-14 22:37:21

标签: ruby unit-testing rspec

出于某种原因,我在运行测试时遇到以下异常,我无法弄清楚原因。我看到的所有示例都表明您不需要向File.stub.open提供任何参数。任何帮助表示赞赏。

Failure/Error: File.stub(:open).and_return (File.new)
ArgumentError: wrong number of arguments (0 for 1..3)

来自rspec测试:

File.stub(:open).and_return (File.new)

从正在测试的代码:

File.open(@downloaded_content_path, "wb"){|f| f.write(response.parsed_response)}

1 个答案:

答案 0 :(得分:2)

File.new期望参数(来自documentation):

  
      
  • new(filename,mode =" r" [,opt])→文件点击切换来源
  •   
  • new(filename [,mode [,perm]] [,opt])→file
  •   
     

根据给定的模式打开由filename命名的文件   返回一个新的File对象。

     

有关模式的说明,请参阅IO.new,然后选择

     

如果正在创建文件,则可以以烫发方式给出权限位。   这些模式和权限位取决于平台;在Unix上   有关详细信息,请参阅open(2)和chmod(2)手册页。

不要创建一个真实的文件,你可以创建一个期望double的{​​{1}},或者你可以查看一个gem伪造你的文件系统,如FakeFS