describe '#messages' do
subject do
FactoryGirl.create :foo,
:type => 'test',
:country => 'US'
end
context 'when is not U.S.' do
before{ allow(subject).to receive(:country).and_return('MX') }
describe '#messages' do
subject { super().messages }
it { is_expected.to include 'This foo was not issued in the United States of America.' }
end
end
end
我正试图为这个主题分配一个属性......我似乎无法使咒语正确。我需要双人吗?我不确定它是如何工作的,我显然无法破译文档。任何帮助表示赞赏。
答案 0 :(得分:0)
我认为这里的问题是范围之一。在设置before
subject
块中的代码
你需要将subject
移出到外部上下文中,将before
移动到内部描述中,或者设置一些替代方法来调用它,以便{{1 }}在运行subject
答案 1 :(得分:0)
我认为您应该使用let
将subject
变量定义为辅助方法。有了这个,您将定义一个可以在文件中的任何位置使用的辅助方法。
所以,我会修改你的代码如下:
describe '#messages' do
let(:subject) do
FactoryGirl.create :foo,
:type => 'test',
:country => 'US'
end
context 'when is not U.S.' do
before{ allow(subject).to receive(:country).and_return('MX') }
describe '#messages' do
subject { super().messages }
it { is_expected.to include 'This foo was not issued in the United States of America.' }
end
end
end