Ruby on rails 如何从测试中删除github存储库依赖项

Ruby on rails 如何从测试中删除github存储库依赖项,ruby-on-rails,ruby,rspec,Ruby On Rails,Ruby,Rspec,我有以下测试: describe "POST 'create'" do let(:url){ Rails.root.join('spec','files','example.git').to_s } it "redirect" do post 'create', repository: {url: url } expect(response).to be_redirect end end 我的控制器代码: def create @repository = R

我有以下测试:

describe "POST 'create'" do
  let(:url){ Rails.root.join('spec','files','example.git').to_s }

  it "redirect" do
    post 'create', repository: {url: url }

    expect(response).to be_redirect
  end
end
我的控制器代码:

def create
  @repository = Repository.new repository_params

  process_and_assign_respository_data

  respond_to do |format|
    if @repository.save
      format.html { redirect_to @repository }
    else
      format.html { render action: 'new' }
    end
  end
end

private

def process_and_assign_respository_data
  path = get_path
  name = Time.now.to_i.to_s

  Git.clone @repository.url, name, path: path
end
“创建”操作将克隆存储库。
测试在局部通过,但在Travis中中断,并显示:

Failure/Error: post 'create', repository: { url: Rails.root.join('spec','files','example.git').to_s }

Git::GitExecuteError:

git clone "--" " &1:fatal: repository 'example.git' does not exist
我通过将
url
更改为github存储库来修复它。

是否有某种方法可以删除对github存储库的依赖,而不打断Travis?

不管repo是否是有效的github url。你只需要假数据来测试,不管是夹具还是工厂,而我更喜欢FactoryGirl

# Define it in factory file
factory :repo do
  url: 'http://example.com/abc.git'
end

# Then test
describe "POST 'create'" do
  let(:repo_attr) { FactoryGirl.attributes_for :repo }

  it "redirect" do
    post 'create', repository: repo_attr
    expect(response).to be_redirect
  end
end

请粘贴控制器方法。不起作用问题不是url,而是存储库路径,在Travis上传递本地路径时找不到存储库,仅在我使用github、bitbucket或similarI时传递。请看,您在real repo上做了一些工作。因此,您需要模拟
process\u和\u assign\u respository\u data
的响应,以返回假结果以获得测试通过。此方法与本测试无关,可以模拟。模拟
过程和分配\u响应\u数据
已工作