gpt4 book ai didi

ruby-on-rails-3 - Rails 3 Rspec 测试数据库持续存在

转载 作者:行者123 更新时间:2023-12-04 02:59:50 25 4
gpt4 key购买 nike

我的测试数据库在每次运行后都没有删除数据时遇到问题。我也有 cucumber 测试,每次运行这些测试时都会清除数据库。

以下规范测试仅在 rake db:test:prepare 之后立即起作用,我的测试或导致数据持续存在的 spec_helper.rb 是否有问题?

我的规范测试是:

require "spec_helper"

describe "/api/v1/offers", :type => :api do
Factory(:offer)
context "index" do
let(:url) { "/api/v1/offers" }
it "JSON" do
get "#{url}.json"
last_response.status.should eql(200)
last_response.body.should eql(Offer.all.to_json(:methods => [:merchant_image_url, :remaining_time, :formatted_price]))
projects = JSON.parse(last_response.body)
projects.any? { |p| p["offer"]["offer"] == "Offer 1" }.should be_true
end

it "XML" do
get "#{url}.xml"
last_response.body.should eql(Offer.all.to_xml(:methods => [:merchant_image_url, :remaining_time, :formatted_price]))
projects = Nokogiri::XML(last_response.body)
projects.css("offer offer").text.should eql("Offer 1")
end
end
end

我的 spec/spec_helper.rb 文件如下所示:
ENV["RAILS_ENV"] ||= 'test'
require File.expand_path("../../config/environment", __FILE__)
require 'rspec/rails'

Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f}

RSpec.configure do |config|
config.mock_with :rspec


config.fixture_path = "#{::Rails.root}/spec/fixtures"

config.use_transactional_fixtures = true
end

干杯,
加兹勒。

最佳答案

工厂需要进before(:each)堵塞:

describe "/api/v1/offers", :type => :api do
before(:each) do
Factory(:offer)
end
context "index" do
... etc ...

RSpec 将回滚在 before(:each) 中创建的所有行。在每个示例运行后阻塞。

关于ruby-on-rails-3 - Rails 3 Rspec 测试数据库持续存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5232852/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com