首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与webmock一起使用的FactoryGirl

与webmock一起使用的FactoryGirl
EN

Stack Overflow用户
提问于 2016-02-21 11:38:21
回答 1查看 966关注 0票数 1

我的工厂有一个url字段(用于获取youtube嵌入式视频):

代码语言:javascript
复制
factory :commercial do
    url 'https://www.youtube.com/watch?v=BTTygyxuGj8'
end

在我的测试中,我试图嘲笑youtube上的请求。我在我的spec_helper中添加了以下内容

代码语言:javascript
复制
require 'webmock/rspec'
WebMock.disable_net_connect!(allow_localhost: true)

RSpec.configure do |config|
  config.before(:suite) do
    mock_request
  end
end

def mock_request
  response = {
    author_name: 'Confreaks',
    # more attributes omitted ..
  }
  WebMock.stub_request(:get, /.*youtube.*/).
    to_return(status: 200, body: response.to_json, headers: {})
end

在rspec配置中注册一次test模拟不足以使存根在整个测试套件中可用吗?为什么我要这样对我的工厂:

代码语言:javascript
复制
factory :commercial do
  url 'https://www.youtube.com/watch?v=BTTygyxuGj8'

  after(:build) do |commercial|
    mock_request
  end
end

如果没有after(:build),我将得到以下错误:

Failure/Error: create(:commercial,WebMock::NetConnectNot合金化Error:真正的HTTP连接被禁用)。未注册请求:...tells我关于未注册请求的youtube和我应该如何存根它..。

EN

回答 1

Stack Overflow用户

发布于 2016-02-22 02:23:14

to_return call中填写标头有帮助吗?

代码语言:javascript
复制
.to_return(
  ...,
  headers: { "Content-Type" => "application/json; charset=utf-8" }
)

用失败输出提供的值填充哈希。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35535617

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档