2010-02-10 32 views
5

Đây là những gì tôi có:Làm thế nào tôi có thể giả lập/giả mạo sự tồn tại của một tập tin bằng cách sử dụng rspec?

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

Vấn đề là lợi nhuận some_file_path "/not_here_yet.jpg" nếu không có tập tin hiện có.

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

Tôi thực sự không muốn tạo tệp mới trong các thử nghiệm của mình. Có cách nào để tôi giả mạo sự tồn tại của tập tin?

Tôi đang nghĩ đến điều gì đó trong dòng:

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 

Đây có phải là có thể? Làm thế nào tôi có thể làm một điều như vậy?

Edit: Tôi nhìn một chút tại FakeFS nhưng tôi không chắc chắn nó trả lời câu hỏi của tôi

Trả lời

6

Bạn có thể làm một cái gì đó trên dòng

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 
+0

Bạn có thể chi tiết một chút về việc này đang làm gì không? – marcgg

+1

Dòng đầu tiên phân tích rằng tệp tồn tại trả về true và dòng thứ hai đang đưa ra phương thức my_image_path trên đối tượng asset và trả về đường dẫn tệp, phương thức some_file_path của bạn sẽ trả về trong trường hợp đó, tức là toàn bộ ví dụ cụ thể là về. Tóm lại, trả về đường dẫn nếu nó tồn tại. – nas

+0

Không phải là bạn phải giữ cho tôi hạnh phúc hay gì cả - tôi không hỏi câu hỏi - nhưng tôi sợ rằng tôi không hiểu điều đó. – Shadowfirebird

-2

Đây có lẽ là một câu trả lời rất vô ích như tôi Tôi chỉ cần tự mình thử nghiệm tự động, nhưng:

Như tôi đã hiểu, bạn chỉ cần kiểm tra hai điều kiện: tệp tồn tại và tệp không tồn tại?

Kiểm tra không tồn tại đủ dễ dàng: tạo Tài sản với my_image_path không tồn tại và kiểm tra hàm trả về '/not_here_yet.jpg'.

Chắc chắn bạn có thể kiểm tra trường hợp khác theo cùng một cách? tạo một tệp rỗng có đuôi .jpg, sau đó là Nội dung trỏ đến nó và kiểm tra xem hàm có trả về đúng tên không?

+0

Tôi không muốn tạo tệp khi đang di chuyển. Các bài kiểm tra sẽ chậm hơn và tôi sẽ phải tạo thêm/xóa cẩn thận tệp. – marcgg

+0

:) Tôi đã nói nó có lẽ sẽ là một câu trả lời vô ích ... – Shadowfirebird

0

Có thể bạn có thể giả mạo với đường dẫn chính xác của Tệp của bạn. Giả mạo cho mỗi tệp mà bạn muốn trả lại đường dẫn

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 
Các vấn đề liên quan