我有一个运行Rails迁移的方法。 (RAILS应用程序安装自动化的一部分)。
我想测试此方法是否调用rails迁移。我不想检查运行迁移的结果,因为那会测试Rails迁移。对该方法进行单元测试意味着我想检查我的方法是否依次称为Rails Migration。
如何在rspec中对该方法进行单元测试?
def run_migrations
system('bin/rails db:migrate RAILS_ENV=development')
end
答案 0 :(得分:4)
我将对该调用进行存根,并检查该存根是否被调用。
before do
allow(Kernel).to receive(:system).and_return(true)
end
it 'runs migrations' do
instance.run_migrations # or however you trigger such that method to be called
expect(Kernel).to have_received(:system).with('bin/rails db:migrate RAILS_ENV=development').once
end
答案 1 :(得分:0)
system('bin/rails db:migrate RAILS_ENV=development')
在有效时返回true
。因此expect(run_migrations).to eq true
就足够了。