instance_doubleの引数に実在する定数名を指定すると動作しない

More than 1 year has passed since last update.


現象

instance_doubleに実在する定数を指定すると動作しません。


具大例

具体例を示します。instance_doubleに Notifier という実在する定数名を指定します。テストを実行するとthe Notifier class does not implement the instance method: suspend!とメッセージが表示され、テストが失敗します。

require 'rspec'

class Notifier
end

RSpec.describe Notifier do
describe '#suespend!' do
let(:notifier) { instance_double('Notifier') }

before do
allow(notifier).to receive(:suspend!).and_return(true)
end

specify do
notifier.suspend!

-- 省略 --
end
end
end


修正方法

instance_doubleにnotifierではなく、doubleNotifierを渡します。

-    let(:notifier) { instance_double('notifier') }

+ let(:notifier) { instance_double('doubleNotifier') }


環境


  • ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-darwin17]

  • RSpec 3.7


    • rspec-core 3.7.1

    • rspec-expectations 3.7.0

    • rspec-mocks 3.7.0

    • rspec-support 3.7.1