相关疑难解决方法(0)

如何在不运行rake规范的情况下为Rails rspec测试准备测试数据库?

经过重大故障排除后,我发现我需要运行rake spec一次(我可以使用control-c中止),然后才能直接运行rspec(例如,在我们规范的子集上).我们正在运行Rails 3.0.7和RSpec 2.5.0.

显然,rake正在运行一些重要的数据库设置任务/代码(我们在根级别Rakefile和其他地方都有自定义代码).

如何在不运行的情况下运行rake测试数据库设置任务/代码rake spec

除了能够在一个文件子集上运行rspec之外,我还使用specjour在多个核心上传播我们的规范(尚未成功将它们传播到局域网中),但我看到了与运行rspec相同的行为直接:我需要rake spec在specjour工作之前在每个测试数据库上运行(假设有两个核心):

rake spec TEST_ENV_NUMBER=1
control-c (after tests start)
rake spec TEST_ENV_NUMBER=2
control-c (after tests start)
specjour
Run Code Online (Sandbox Code Playgroud)

注意:我的config/database.yml有这个测试条目(对于并行测试宝石来说很常见):

test:
  adapter: postgresql
  encoding: unicode
  database: test<%=ENV['TEST_ENV_NUMBER']%>
  username: user
  password:
Run Code Online (Sandbox Code Playgroud)

parallel_tests似乎正确设置了它的数据库,但我们的许多规范都失败了.

我还应该提一下,运行specjour prepare会导致Postgres记录它无法找到数据库的错误,但它会创建它们(没有表).在后续运行中,不会记录任何错误,也不会创建任何表.我的整个问题可能只是一个错误prepare,所以我在github上报告了它.

我认为我可以通过设置Specjour::Configuration.prepare.specjour/hooks.rb 在每个specjour测试数据库上运行任意代码,所以如果有任何rake任务或我需要运行的其他代码,它可能在那里工作.

rspec ruby-on-rails rspec2 ruby-on-rails-3 specjour

81
推荐指数
4
解决办法
9万
查看次数

Rake db:test:prepare不会创建`table view`

我的项目中有两个表具有几乎相同的结构,其中一个用于计算用户统计信息,另一个表从未用于此.现在我需要使用它们来计算统计数据.

我使用MySQL Views做到了这一点,除了我的测试,一切都很顺利.似乎数据库清理程序策略不会将数据保存在数据库中,并且我的视图从未被填充.

我从移动的策略:transaction:truncation和数据开始被持久化.但我仍然有问题,我继续无法从视图中读取数据.

# spec/spec_helper.rb
config.before(:each, using_view: true) do
  DatabaseCleaner.strategy = :truncation
end

# spec/models/stats/answer.rb
describe 'POC test', using_view: true do
  it 'works fine without the table view' do
    expect{ create(:answer) }.to change{ Answer.count }
    expect{ create(:knowledge_answer) }.to change{ Knowledge::Answer.count }
  end

  it 'works fine with the table view' do
    expect{ create(:answer) }.to change{ Stats::Answers.count }
    expect{ create(:knowledge_answer) }.to change{ Stats::Answers.count }
  end
end
Run Code Online (Sandbox Code Playgroud)

当我执行它时:

Stats::Answers
  POC test
    works fine with the table view (FAILED …
Run Code Online (Sandbox Code Playgroud)

mysql rake ruby-on-rails

14
推荐指数
1
解决办法
710
查看次数

运行几次后,rails 测试数据库未清除

我正在使用 rspec 进行测试,我注意到在运行测试后,它有时会在测试数据库中留下一些记录。我不知道为什么。我在我的配置文件中将 use_transactional_fixtures 设置为 true。但是直到我手动删除记录它们才会消失。有没有人有办法阻止这种情况?

编辑; 在我说只有当测试失败时。事实并非如此。

rspec ruby-on-rails

2
推荐指数
1
解决办法
4248
查看次数

标签 统计

ruby-on-rails ×3

rspec ×2

mysql ×1

rake ×1

rspec2 ×1

ruby-on-rails-3 ×1

specjour ×1