0

我仍然对诸如此类的东西背后的魔法it { should have(1).error_on(:base) }以及特定的应该匹配器是什么感到很困惑。

我想确保它:base包含错误消息“xxx”,那么我应该怎么做呢?

it "should contain error message 'xxx'" do
  contact.valid?
  contact.errors[:base].should include('xxx')
end

这是“要走的路”,还是有更好的?谢谢。

4

1 回答 1

5

没错,看起来不错。内联 rspec 测试正在使用主题。你可以像这样重写你的测试:

describe 'my method' do
  before { contact.valid? }

  context 'contact is not valid' do
    subject { contact.errors[:base] }
    it { should include 'xxx' }
  end
end

在主题上调用 should 方法。有时它可能更具可读性。而且您不必为不言自明的规格编写描述;-)

于 2012-07-12T17:33:08.650 回答