Rspec错误:已经采取了位置

时间:2017-10-27 15:08:19

标签: ruby ruby-on-rails-4 rspec

我在rspec中有以下测试用例

  let(:detail) { FactoryGirl.create(:detail) }

    let(:url) do
      "/detail/#{detail.detail_id}"\
      "/user/#{detail.user.id}/details"
    end
    let(:location_header) do
      detail_url(detail_id: detail.detail_id,
                  user: detail.user.id, location: detail.location)
    end

    before do
      post url, params: params
    end
    context 'when valid location and value are passed, detail is created successfully.' do
      let(:params) {{detail_app_id: detail.detail_app_id, location: detail.location, value: 'value'}}
        it { expect(response.status).to eq(201) }
    end

我正在学习ruby rspec,我收到错误“{\"error\":\"Validation failed: location has already been taken\"}"

当我更改params中的位置值时,它会通过但是因为我正在为它创建工厂女孩,所以我想使用该值而不是传递不同的值。 知道我为什么会收到这个错误吗?

1 个答案:

答案 0 :(得分:0)

你需要进入你的一个工厂(我假设细节)并正确分配它的位置(factory / detail.rb)。

这里发生的是您尝试创建一个新细节,它试图保存,但验证失败(我假设您对细节进行了唯一的位置验证)模型)

查看序列部分http://www.rubydoc.info/gems/factory_bot/file/GETTING_STARTED.md,了解如何在需要时提供唯一属性。