Ruby 如何编写rspec测试用例来测试方法的成功执行和异常条件?

Ruby 如何编写rspec测试用例来测试方法的成功执行和异常条件?,ruby,unit-testing,rspec,Ruby,Unit Testing,Rspec,我想编写一个rspec单元测试用例,这样,如果存在internet连接,它将连接到gmail,否则它将引发异常 我试着写些东西,但它只是问题的一部分。 我怎样才能编写一个单元测试用例,这样它就可以同时测试这两种情况,也就是说,如果无法连接gmail,将断言异常,否则将测试成功的连接 describe "#will create an authenticated gmail session" do it "should connect to gmail, if internet conne

我想编写一个rspec单元测试用例,这样,如果存在internet连接,它将连接到gmail,否则它将引发异常

我试着写些东西,但它只是问题的一部分。 我怎样才能编写一个单元测试用例,这样它就可以同时测试这两种情况,也就是说,如果无法连接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
你应该在这里使用或

案例1(存在互联网连接时的行为):

也许你想返回一些对象(
Gmail.should\u receive(:new)。然后返回(some\u object)
)并继续使用这个存根对象

案例2(不存在互联网连接时的行为):

我希望这段代码对您有所帮助

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