私SubscriptionsController
は持っています:
# DELETE /subscription # {{{
def destroy
@subscription = current_user.subscriptions.find params[:id]
@subscription.cancel!
redirect_to subscriptions_path, :notice => "Abonnement beendet."
end# }}}
current_user.subscriptions.find params[:id]
Controller-Specs でモックアウトする正しい方法は何ですか?
現在、前のブロックでこれを試しています。
double(Subscription)
controller.current_user.stub!(:subscriptions).and_return(Subscription)
Subscription.stub!(:find).and_return(subscription)
しかし、私の RSpec-Expectations が機能しないため、これは期待どおりに機能しないようです。
it "updates the status to canceled" do
sub = Subscription.stub!(:find).and_return(subscription)
sub.stub!(:cancel!)
sub.should_receive :cancel!
delete :destroy, :id => 1
end
should_receive
期待が満たされないため、このブロックは常に失敗します。
1) SubscriptionsController DELETE /subscription/:id updates the status to canceled
Failure/Error: sub.should_receive :cancel!
(#<Proc:0x007fbdec0a2650@/Users/nilsriedemann/.rvm/gems/ruby-1.9.3-p125-perf@bloomy-days/gems/rspec-mocks-2.6.0/lib/rspec/mocks/message_expectation.rb:63 (lambda)>).cancel!(any args)
expected: 1 time
received: 0 times
# ./spec/controllers/subscriptions_controller_spec.rb:38:in
# `block (3 levels) in <top (required)>'
# '
その上、誰かがコメントでスタブや嘲笑に関する完全な記事への素敵なリンクをドロップしてくれたら、私はとてつもなく幸せです. それでも(明らかに)そのコツがわかりません。