如何在RSpec中将一种方法的输出传递给另一种方法?
我有一个名为db_conn.rb的类,其中有2个方法 1.一种方法是检查是否建立了db连接,称为如何在RSpec中将一种方法的输出传递给另一种方法?,rspec,Rspec,我有一个名为db_conn.rb的类,其中有2个方法 1.一种方法是检查是否建立了db连接,称为is\u conn? 2.另一个是关闭db连接,即关闭\u conn 现在我想为close\u conn编写rspec。我的逻辑是运行close\u conn,然后调用is\u conn?检查布尔值,该值应为false 下面是我的规范文件。我需要更多的指导来实现这一目标 describe DdModule::DbConnn do before(:context) { puts "
is\u conn?
2.另一个是关闭db连接,即关闭\u conn
现在我想为close\u conn
编写rspec
。我的逻辑是运行close\u conn
,然后调用is\u conn?
检查布尔值,该值应为false
下面是我的规范文件。我需要更多的指导来实现这一目标
describe DdModule::DbConnn do
before(:context) {
puts "Testing DB connection..."
@obj = DbModule::DbConn.new("hostname", "instance", "port", "user", "pass")
}
it "connect_db constructor takes five parameters and returns true if connection establishes" do
expect(@obj.is_conn?).to eq true
end
it "connect_db close_connection should close the connection and is_connection should return false" do
@obj.close_conn
expect(@db_obj.is_conn?).to eq false
end
我看到以下结果:
rspec
Testing DB connection...
Oracle Connection user@jdbc:oracle:thin:@host:1521/instance initialized..
.FFF
Failures:
1) DbModule::DbConn close_connection should close the connection and is_conn should return false
Failure/Error: expect(@obj.is_conn?).to eq false
expected: false
got: true
(compared using ==)
# ./spec/conn_db_spec.rb:21:in `(root)'
Finished in 0.2 seconds (files took 0.27 seconds to load)
2 examples, 1 failures
如果它是一个实例方法,您希望用另一个实例方法更改它,那么您需要像这样编写您的期望(我在本地创建了一个测试类以确保它工作) 如果是我,我会这样写完整的规范
describe DdModule::DbConnn do
let!(:db_conn) do
DbModule::DbConn.new("hostname", "instance", "port", "user", "pass")
end
describe '#close_conn' do
it 'closes the db connection' do
expect {db_conn.close_conn}.to change(db_conn, :is_conn?).from(true).to(false)
end
end
end
您是否有意在:context之前使用
,而不是在:example
之前使用?什么是@db_obj?你不是说“obj”吗?米莱斯坦尼德,非常感谢你提供的细节。我试图包括您建议的expect
行。现在我看到了以下错误消息:失败/错误:expect(@db_obj.close_connection)。要更改(db_obj,:is_connection?)。从(true).更改为(false)
expected#is_connection?从“真”变为“假”,但没有被阻止。
因为你把我说的两件事混在一起了。我把expect{db\u conn.close\u conn}放到notexpect(@db\u obj.close\u connection).to
describe DdModule::DbConnn do
let!(:db_conn) do
DbModule::DbConn.new("hostname", "instance", "port", "user", "pass")
end
describe '#close_conn' do
it 'closes the db connection' do
expect {db_conn.close_conn}.to change(db_conn, :is_conn?).from(true).to(false)
end
end
end