Ruby 如何编写rspec测试用例来测试方法的成功执行和异常条件?
我想编写一个rspec单元测试用例,这样,如果存在internet连接,它将连接到gmail,否则它将引发异常 我试着写些东西,但它只是问题的一部分。 我怎样才能编写一个单元测试用例,这样它就可以同时测试这两种情况,也就是说,如果无法连接gmail,将断言异常,否则将测试成功的连接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
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