这看起来像是一个新手问题,但我很难过。我正在尝试构建一个简单的Ruby冗余服务,并且我正在使用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)>'
如果有人需要更多信息,我们会进行编辑。知道这个错误意味着什么吗?无论如何,我似乎无法摆脱它。
答案 0 :(得分:25)
这似乎是一个错字。应该是主体而不是:主题
allow(subject).to receive(:client) { client }