これは初心者の問題のように見えるかもしれませんが、困惑しています。簡単なRuby slackサービスを構築しようとしています。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)>'
誰かがさらに情報を必要とする場合は編集します。このエラーの意味は何ですか?どうしてもそれを取り除くことができないようです。
タイプミスのようです。 :subjectではなく件名である必要があります
allow(subject).to receive(:client) { client }