2016-09-09 17 views
1

は私は 1つの方法は、DB接続が確立されるかしないもう一つは、DB接続、すなわち、close_connを閉鎖することであるis_conn? 2と呼ばれるているかどうかを確認することである2-メソッドを持っているdb_conn.rbと呼ばれるクラスを有しています。1つのメソッドの出力をRSpecの別のメソッドに渡すにはどうすればいいですか?

close_connにはrspecと書きます。私のロジックはclose_connを実行し、次にであるブール値を確認するためにis_conn?を呼び出します。

以下は私の仕様ファイルです。これを達成するために、より多くの指針が必要です。

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 [email protected]: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 
+0

などのフルスペックを書きますか? –

+1

@db_objとは何ですか?あなたは@objを意味しませんでしたか? – oren

答えて

1

それはあなたが別のインスタンスメソッドで変更することが予想されるインスタンスメソッドなら、あなたはこのようなあなたの期待を記述する必要がある、私はテストクラスを作りました(それが動作するようにローカルに)。 example`:かなり前に `よりcontext`:それは私だったら

expect {@obj.close_conn}.to change(@obj, :is_conn?).from(true).to(false) 

、私はあなたが意図的に`前を使用しています。この

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 
+0

@MilesStanfied、詳細は大変ありがとうございます。私はあなたから提案された 'expect'行を含めるようにしました。今、私は次のエラーメッセージが表示されています: '失敗/エラー:(db_obj、:is_connection?)を変更する(db_obj.close_connection)を期待しています(true).to(false)' '期待する#is_connection?真実から偽に変わったのですが、ブロックが与えられていませんでした」。 – itsh

+0

あなたは私が言った2つのことを混合しているからです。私は 'expect {db_conn.close_conn} .to'を' expect(@ db_obj.close_connection).to'と置きます。 – MilesStanfield

+0

ありがとうございます。それはうまくいった。 – itsh

関連する問題