代码之家  ›  专栏  ›  技术社区  ›  marcgg

如何使用rspec模拟/伪造文件的存在?

  •  7
  • marcgg  · 技术社区  · 15 年前

    这就是我所拥有的:

    it "should be able to get a valid directory path" do  
       @asset.some_file_path.should == "/something/test.jpg"
    end
    

    问题是,如果没有现有文件,某些文件路径返回“/not\u here\u yet.jpg”。

    def some_file_path
      if File.exists(self.my_image_path)
        return my_image_path
      else
        return "/not_here_yet.jpg
      end
    end
    

    我不想在测试中创建新文件。我有没有办法伪造文件的存在?

    我在想:

    it "should be able to get a valid directory path" do  
       AwesomeFakeFileCreator.create(@asset.my_image_path)
       @asset.some_file_path.should == "/something/test.jpg"
    end
    

    这有可能吗?我怎么能做这种事?

    编辑:我看了一下 FakeFS 但我不确定它能回答我的问题

    3 回复  |  直到 15 年前
        1
  •  6
  •   nas    15 年前

    你可以做点什么

    it "should be able to get a valid directory path" do  
      File.stub!(:exists?).and_return(true)
      @asset.stub!(:my_image_path).and_return("/something/test.jpg")
      @asset.some_file_path.should == "/something/test.jpg"
    end
    
        2
  •  0
  •   Boris Barroso    15 年前

    也许你可以用文件的正确路径来伪装。对于要返回路径的每个文件都是假的

      it "should be able to get a valid directory path" do  
        File.stub!(:exists?).with("my_image_path.jpg").and_return("my_image_path.jpg")
        @asset.some_file_path.should == "my_image_path.jpg"
      end
    
        3
  •  -2
  •   Shadowfirebird    15 年前

    这可能是一个非常无益的答案,因为我自己只是在做自动化测试,但是:

    据我所知,您只需要测试两个条件:文件存在,文件不存在?

    测试不存在就足够简单了:用不存在的my-image_路径创建一个资产,并检查函数是否返回“/not_here\u yet.jpg”。

    你当然可以用同样的方法测试另一个案例吗?创建一个扩展名为.jpg的空文件,然后创建一个指向该文件的资产,并检查函数是否返回正确的名称?