2013-09-27 46 views
0

我正在使用FactoryGirl模擬我的模型進行單元(RSpec)測試和集成(Cucumber)測試。在創建News工廠時,我創建了一個隨機圖像URL,該項目顯然不存在。當運行一個Selenium測試時,這個get拿到404。嘲諷入局請求到rails

FactoryGirl.define do 
    factory :news do 
    title { Faker::Lorem.sentence } 
    image { Faker::Internet.relative_url ".jpg" } 
    body { Faker::Lorem.paragraphs.join "\r\n\r\n" } 

    before :create do 
     Timecop.freeze Faker::Date.time 
    end 

    after :create do 
     Timecop.return 
    end 

    after :build do |article| 
     # Somehow mock a 200 response for #{article.image} 
    end 

    factory :published_news do 
     published true 
    end 
    end 
end 

什麼是模擬我的圖像響應的最佳方式?

回答

0

你想在測試中做模擬,取得該圖像,而不是在工廠。

無論是或者只是在圖像鏈接中提供一個靜態圖像文件(你不需要測試你的模型可以接受不同的URL字符串)。

+0

OK,所以如果我不得不寫的模擬測試,我將如何做呢?我找到了模仿請求的庫,但沒有路由。 – johngeorgewright

+0

就個人而言,嘲笑這一點幾乎沒有什麼好處。只需創建一個標準圖像,將其放在'/ assets/images /'文件夾中,並在工廠中引用它,以便始終生成帶有該圖像的新聞對象:'image'/ assets/test_image.jpg''沒有測試任何真正的動態。 –

0

如果你想返回200,你能不能像這樣返回它?

after :build do |article| 
["200", "OK"] 
end 
0

單單隻出現在你的規格增加了以下內容:

describe Zomg do 
    it 'should get ok' do 
    stub_request(:any, "http://factory-generated-url-here/").to_return(body: '', status: 200) 

    # you stuff with request   
    end 
end 

感謝webmock