【问题标题】:How to raise standard error from a rspec test?如何从 rspec 测试中提高标准错误?
【发布时间】:2015-06-23 01:32:16
【问题描述】:

所以我有一个 rspec 测试,我试图让我的程序对其进行验证:

rspec 测试中的代码 sn-p:

context '#validate(test_tool)' do
   it { expect(test_tool.validate).to raise_error StandardError }

来自 test_tool 的代码 sn-p(test_tool 是我为通过 rspec 测试而编写的程序) 在 test_tool 内部有多种方法,但我只是抽出了 rspec 测试正在寻找的一种方法:

def self.validate
     raise StandardError
end

我到处都用谷歌搜索过。无论我如何尝试引发此错误。我不断收到错误消息。请看控制台输出的sn-p:

example at ./spec/training_site/spec_test.rb:56 (FAILED - 1)

Failures:

  1) MyClass #validate(test_tool) 
     Failure/Error: it { expect(MyClass.validate).to raise_error StandardError }
     StandardError:
       StandardError

第 56 行只是第一个代码 sn-p 的第二行。

基本上,我正在寻找故障排除和/或有关我应该如何完成此任务的示例。

【问题讨论】:

  • 你能试试用expect{MyClass.validate}代替expect(MyClass.validate)吗?
  • @Maxim - 是的,这似乎有效。为什么我需要使用花括号而不是括号?

标签: ruby rspec rspec2


【解决方案1】:

这是正确的规范。您应该使用 {} (方括号),因为您正在等待它引发错误。您使用的简单括号用于值检查。

context '#validate(test_tool)' do
  it { expect{test_tool.validate}.to raise_error StandardError }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-24
    • 1970-01-01
    • 2015-12-26
    • 2021-12-09
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多