0

インターネット接続が存在する場合はgmailに接続し、そうでない場合は例外が発生するように、rspecユニットテストケースを作成したいと思います。

私は何かを書き込もうとしましたが、それは問題の一部にすぎません。両方をテストできるように、ユニットテストケースを作成するにはどうすればよいですか。Gmail に接続できない場合は例外をアサートし、それ以外の場合は接続の成功をテストします。

describe "#will create an authenticated gmail session" do
    it "should connect to gmail, if internet connection exists else raise exception" do
       @mail_sender = MailSender.new
       lambda { @mail_sender.connect_to_gmail}.should raise_error
    end
end

メソッド定義

def connect_to_gmail
    begin
      gmail = Gmail.new('abc@gmail.com', 'Password123' )
    rescue SocketError=>se
       raise "Unable to connect gmail #{se}"
    end
end
4

1 に答える 1

2

ここではスタブまたはshould_receiveを使用する必要があります。

ケース 1 (インターネット接続が存在する場合の動作):

it "should connect to gmail, if internet connection exists" do
  Gmail.should_receive(:new)
  @mail_sender = MailSender.new
  -> { @mail_sender.connect_to_gmail}.should_not raise_error
end

Gmail.should_receive(:new).and_return(some_object)オブジェクト ( ) を返して、このスタブ化されたオブジェクトで作業を続けたいと思うかもしれません。

ケース 2 (インターネット接続が存在しない場合の動作):

it "should raise error to gmail, if internet connection does not exist" do
  Gmail.stub(:new) { raise SocketError }
  @mail_sender = MailSender.new
  -> { @mail_sender.connect_to_gmail}.should raise_error
end

このコードがお役に立てば幸いです

于 2013-09-15T17:21:10.800 に答える