我想编写一个rspec单元测试用例,这样如果存在互联网连接,它将连接到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
答案 0 :(得分:2)
您应该在这里使用stubs或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
我希望此代码可以帮助您