测试 Rspec 测试,有什么方法让测试代码运行后产生的数据不被清除么。

ampedxx · 2017年12月22日 · 最后由 ampedxx 回复于 2017年12月25日 · 6422 次阅读

最近在写测试的时候遇到这么个问题,

RSpec.describe Api::PersonalInfosController, type: :controller do
  describe 'POST #create' do
    student_id = nil
    it '创建学生' do
            student = Student.new.save
            student_id = student.id
    end

    it '刚才创建的student是否还存在' do
             student = Student.find_by_id(student_id)
             # 这个时候就会发现刚刚创建的那一个学生已经被删除了。有什么方法让他不被删除么?
    end
end

在网上看到修改 config/environments/test.rb 中的 config.cache_classes 为 false,但是并没有起作用。

rails_helper.rb

config.use_transactional_fixtures = false

这样应该可以达到你的需求,不过我是没懂你为什么有这种需求……

你测试用例写在一个 it 里面就行了

这不是保留数据的问题,而是你没搞懂测试到底要做什么。

你的两个 test case,分明是一个 test 的流程。

所以,最大的问题是你还没搞懂什么是测试和如何测试

另外,这排版很醉

建议先学习一下测试基础

因为实际项目用到工作流。打比方就像是做饭一样,买菜、洗菜、切菜、炒菜。我想对洗菜这个步骤写一个单元测试,但是必须要买好菜以后才能测试它,所以我提了这个问题。如果把四个步骤的测试写在一个 it 里面,感觉不太友好。 非常感谢大家

需要 登录 后方可回复, 如果你还没有账号请 注册新账号