【问题标题】:How to test assm guard error with rspec?如何使用 rspec 测试 assm 保护错误?
【发布时间】:2014-08-30 16:20:25
【问题描述】:

我有一个带有一些保护的状态机来防止特殊的状态转换。 在我的规范中,我试图期待像这样的守卫违规错误:

expect(violate_guard).to raise_exception

因此,我在规范测试中收到正确的错误:

失败/错误:expect(my_model.change_event).to raise_exception AASM::无效转换: 事件“change_event”无法从“current_state”转换

我想知道如何更改我的规范以获得满意的测试?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-4 rspec rspec3 aasm


    【解决方案1】:

    你可以试试:

    expect { violate_guard }.to raise_error
    

    http://rubydoc.info/gems/rspec-expectations/frames

    【讨论】:

      【解决方案2】:

      我不太明白。 如果你想要一个方法来包装转换违规,你必须在规范中定义一个方法

      def violate_guard
        job = Job.new
        job.run ## <= invalid transition
      end
      

      然后你使用规范中的方法

      expect { violate_guard }.to raise_error
      

      【讨论】:

      • 太棒了!你的答案不是答案,但是你的语法错误让我大开眼界! expect { violate_guard ) 左大括号和右括号!我应该使用{} 将方法传递给expect
      猜你喜欢
      • 1970-01-01
      • 2014-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-20
      • 2012-07-06
      • 2018-07-30
      • 2018-08-23
      相关资源
      最近更新 更多