`be` 匹配器

有几个相关的 “be” 匹配器

  expect(obj).to be_truthy  # passes if obj is truthy (not nil or false)
  expect(obj).to be_falsey  # passes if obj is falsy (nil or false)
  expect(obj).to be_nil     # passes if obj is nil
  expect(obj).to be         # passes if obj is truthy (not nil or false)

The be_truthy 匹配器

给定一个名为 “betruthyspec.rb” 的文件,其中包含

RSpec.describe "be_truthy matcher" do
  specify { expect(true).to be_truthy }
  specify { expect(7).to be_truthy }
  specify { expect("foo").to be_truthy }
  specify { expect(nil).not_to be_truthy }
  specify { expect(false).not_to be_truthy }

  # deliberate failures
  specify { expect(true).not_to be_truthy }
  specify { expect(7).not_to be_truthy }
  specify { expect("foo").not_to be_truthy }
  specify { expect(nil).to be_truthy }
  specify { expect(false).to be_truthy }
end

我运行 rspec be_truthy_spec.rb

然后输出应包含 “10 个示例,5 个失败”

并且输出应包含

       expected: falsey value
            got: true

并且输出应包含

       expected: falsey value
            got: 7

并且输出应包含

       expected: falsey value
            got: "foo"

并且输出应包含

       expected: truthy value
            got: nil

并且输出应包含

       expected: truthy value
            got: false

The be_falsey 匹配器

给定一个名为 “befalseyspec.rb” 的文件,其中包含

RSpec.describe "be_falsey matcher" do
  specify { expect(nil).to be_falsey }
  specify { expect(false).to be_falsey }
  specify { expect(true).not_to be_falsey }
  specify { expect(7).not_to be_falsey }
  specify { expect("foo").not_to be_falsey }

  # deliberate failures
  specify { expect(nil).not_to be_falsey }
  specify { expect(false).not_to be_falsey }
  specify { expect(true).to be_falsey }
  specify { expect(7).to be_falsey }
  specify { expect("foo").to be_falsey }
end

我运行 rspec be_falsey_spec.rb

然后输出应包含 “10 个示例,5 个失败”

并且输出应包含

       expected: truthy value
            got: nil

并且输出应包含

       expected: truthy value
            got: false

并且输出应包含

       expected: falsey value
            got: true

并且输出应包含

       expected: falsey value
            got: 7

并且输出应包含

       expected: falsey value
            got: "foo"

The be_nil 匹配器

给定一个名为 “benilspec.rb” 的文件,其中包含

RSpec.describe "be_nil matcher" do
  specify { expect(nil).to be_nil }
  specify { expect(false).not_to be_nil }
  specify { expect(true).not_to be_nil }
  specify { expect(7).not_to be_nil }
  specify { expect("foo").not_to be_nil }

  # deliberate failures
  specify { expect(nil).not_to be_nil }
  specify { expect(false).to be_nil }
  specify { expect(true).to be_nil }
  specify { expect(7).to be_nil }
  specify { expect("foo").to be_nil }
end

我运行 rspec be_nil_spec.rb

然后输出应包含 “10 个示例,5 个失败”

并且输出应包含

       expected: not nil
            got: nil

并且输出应包含

       expected: nil
            got: false

并且输出应包含

       expected: nil
            got: true

并且输出应包含

       expected: nil
            got: 7

并且输出应包含

       expected: nil
            got: "foo"

The be 匹配器

给定一个名为 “be_spec.rb” 的文件,其中包含

RSpec.describe "be_matcher" do
  specify { expect(true).to be }
  specify { expect(7).to be }
  specify { expect("foo").to be }
  specify { expect(nil).not_to be }
  specify { expect(false).not_to be }

  # deliberate failures
  specify { expect(true).not_to be }
  specify { expect(7).not_to be }
  specify { expect("foo").not_to be }
  specify { expect(nil).to be }
  specify { expect(false).to be }
end

我运行 rspec be_spec.rb

然后输出应包含以下所有内容

10 个示例,5 个失败
预期 true 评估为 false
预期 7 评估为 false
预期 “foo” 评估为 false
预期 nil 评估为 true
预期 false 评估为 true