在RSpec中是否有一种惯用的方法来消除重复的方法调用?



当在相同的描述块中重复进行相同的调用时,例如

RSpec.describe Grant do
  let(:grant) { Grant.make }
  describe "#exchange!" do
    it "destroys token" do
      grant.exchange! # dry me up!
      expect(grant).to be_destroyed
    end
    it "returns a Token" do
      expect(grant.exchange!).to be_a(Token) # dry me up!
    end
  end
end

我想干grant.exchange!

我已经知道如何用subject来做,但我知道外显对象是臭的。

您可以使用let!定义一个记忆助手,在每个示例之前执行:

RSpec.describe Grant do
  let(:grant) { Grant.make }
  describe "#exchange!" do
    let!(:result) { grant.exchange! }
    it "destroys token" do
      expect(grant).to be_destroyed
    end
    it "returns a Token" do
      expect(result).to be_a(Token)
    end
  end
end
但是,我个人更喜欢在示例中显式地调用该方法,就像在您的代码中一样。这样可以更容易地处理调用前后的状态。

相关内容

  • 没有找到相关文章

最新更新