私は自分の宝石を持っています。だから、私は私の宝石を使ったテストアプリを持っています。私のアプリケーションでは、私の宝石モデルの上にカスタムコールバックを追加するためのイニシャライザファイルを作成しました。Rails RspecテストSlack :: Notifier
このような何か:
#my_app/confing/initializers/my_nagios.rb
MyNagios::Check.class_eval do
after_save :send_slack_notification
private
def send_slack_notification
...
@notifier ||= Slack::Notifier.new "..."
...
@notifier.ping "..."
そして今のところ、私はこのカスタムコールバックのためのRSpecのテストを作成したいです。
私はこのような何かしてみてください:
describe MyNagios::Check do
let(:slack_notifier) { double(Slack::Notifier) }
it 'should send notification' do
... some actions ...
expect(slack_notifier).to receive(:ping).with('test') # 'test' just for now, it will be replaced
をしかし、私はエラーを受信:
(Double Slack::Notifier).ping("test")
expected: 1 time with arguments: ("test")
received: 0 times
は私がSlack::Notifier
かないためdouble
を使用する必要がありますか?私のテストで何が間違っていますか?
しかし、これらのテストは、宝石を使用するアプリではなく、宝石そのものに書く方がはるかに簡単です。 – omnikron
ありがとうございました。まあ、最もエレガントな解決策ではありませんが、 'expect_any_instance_of(Slack :: Notifier).to receive(:ping).with( '...')とand_return(true)' –