2017-11-02 4 views
1

これは初心者の問題のようですが、私は困惑しています。私は単純なRubyスラックサービスを構築しようとしており、私はRSpecを使っていくつかのユニットテストをまとめています。私はこの奇妙な問題にぶつかり、何が起こっているのか分かりません。TypeError:シングルトン(RSpec)を定義できません

RSpec.describe SlackService do 
    let(:token) { 'BOT-TOKEN' } 
    subject do 
    SlackService.new(token) 
    end 

    describe '#channel_list' do 
    context 'get channels' do 
     let(:client) { instance_double(Slack::Web::Client) } 
     before(:each) do 
     allow(:subject).to receive(:client) { client } 
     @result = subject.channel_list 
     end 
     it { expect(@result).to eq [] } 
    end 
    end 
end 

私はrspecを実行したときに私が手にエラーは、誰かがより多くの情報が必要な場合は編集します

Failures: 

    1) SlackService#channel_list get channels 
    Failure/Error: allow(:subject).to receive(:client) { instance_double(Slack::Web::Client) } 

    TypeError: 
     can't define singleton 
    # ./spec/slack_service_spec.rb:12:in `block (4 levels) in <top (required)>' 

です。このエラーが何を意味するのか?私は何があってもそれを取り除くことはできない。

答えて

7

タイプミスのようです。主題でなければならない:件名

allow(subject).to receive(:client) { client } 
+0

ああ、確かに。それを逃した。 –

+0

それは難しいことです。私は以前にそれに遭遇しました。 :D –

関連する問題