0

これを使ってみましたHow do I test Pony emailing in a Sinatra app, using rspec? 電子メールを送信する Rails 3.1 アプリをテストします。送信は問題なく動作しますが、テストを実行するのに苦労しています。これが私がこれまでに持っているものです...

spec/spec_helper.rb

config.before(:each) do
    do_not_send_email
end
.
.
.
def do_not_send_email
    Pony.stub!(:deliver) # Hijack to not send email.
end

そして私の users_controller_spec.rb で

it "should send a greeting email" do
    post :create, :user => @attr
    Pony.should_receive(:mail) do |params|
        params[:to].should == "nuser@gmail.com"
        params[:body].should include("Congratulations")
    end
end

そして私はこれを得る...

失敗:

1) UsersController POST 'create' が成功すると、挨拶メールが送信されます 失敗/エラー: Pony.should_receive(:mail) do |params| (Pony).mail(any args) expected: 1 time received: 0 times # ./spec/controllers/users_controller_spec.rb:121:in `ブロック (4 レベル) in '

Pony にはメールが届かないようですが、実際のメールは送信されていることはわかっています。

何か案は?

4

2 に答える 2

2

これが私が最終的にテストのために最終的に得たものです...

it "should send a greeting email" do
    Pony.should_receive(:deliver) do |mail|
        mail.to.should == [ 'nuser@gmail.com' ]
        mail.body.should =~ /congratulations/i
    end
    post :create, :user => @attr
end

Pony.should_rececieve には :deliver (:mail ではない) が必要で、do/end が少し変更され、セットアップ後に投稿が行われました。

これが他の誰かに役立つことを願っています。

于 2012-01-26T01:33:27.113 に答える