繁体   English   中英

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

[英]Is there an idiomatic way to dry up repeated method calls in 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

但是,我个人更喜欢从示例中显式调用该方法,就像在您的代码中一样。 这样可以更轻松地处理调用前后的状态。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM