代码之家  ›  专栏  ›  技术社区  ›  esakiraja

在rspec中是否有使用类似“verify”的匹配器的方法?

  •  0
  • esakiraja  · 技术社区  · 6 年前

    到目前为止,我在我的测试框架中使用了“expect”,它将在满足失败条件时停止执行。我想要的是,即使执行满足失败条件,也应该执行。我可以看到rspec中有一个名为“verify”的matcher,我需要在其中继承“test::unit::testcase”类,但我的问题是,我的spec文件中需要这个matcher,它不是用Ruby类编写的。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Alan Joseph    6 年前

    对于rspec,没有现成的方法可以做到这一点。 因为rspec被设计用来测试小的、独立的逻辑。

    失败时,rspec匹配器会产生错误,所以您可以将匹配器包装在一个救援块中。 为了满足您的需要,您可以编写这样的包装器:

    def report_last(&block)
      begin
        yield
      rescue Exception => e
        puts "Failure: #{e}"
      end
    end
    

    在测试用例中:

    describe Calculator do
      it “should add 2 numbers” do
        report_last do
          expect(described_class.new(2, 3).sum)to eq(5)
        end
      end
    end