0

我正在使用 FactoryGirl 来模拟单元(RSpec)测试和集成(Cucumber)测试的模型。创建News工厂时,我创建了一个随机图像 URL,该 URL 显然在项目中不存在。在运行 Selenium 测试时,这个 get 被选为 404。

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

模拟我的图像响应的最佳方式是什么?

4

3 回答 3

0

您想在获取该图像的测试中进行模拟,而不是在工厂中。

或者只是在图像链接中提供一个静态图像文件(您不需要测试您的模型是否可以接受不同的 URL 字符串)。

于 2013-09-27T11:48:18.563 回答
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

于 2013-10-05T16:52:57.333 回答
0

如果要退200​​,能不能不就这样退?

after :build do |article|
 ["200", "OK"]
end
于 2013-10-05T16:25:56.203 回答