ruby-on-rails - minitest上的错误信息测试

标签 ruby-on-rails ruby minitest

我使用 mini_test 进行测试。我有如下代码部分。

raise Type_Error, 'First Name must not be empty' if  @person.first_name == nil

如何编写这段代码的测试? 谢谢...

最佳答案

我想你想要assert_raises ,它断言传递给它的 block /表达式将在运行时引发异常。

例如,我的一个项目有以下最小测试:

  test 'attempting to create a CreditCard that fails to save to the payment processorshould prevent the record from being saved' do
    assert_equal false, @cc.errors.any?

    failure = "simulated payment processor failure"
    failure.stubs(:success?).returns(false)
    failure.stubs(:credit_card).returns(nil)

    PaymentProcessor::CreditCard.stubs(:create).returns(failure)

    assert_raises(ActiveRecord::RecordNotSaved) { create(:credit_card) }
  end

在我的例子中,它的作用是:

  • 从支付处理器 API 创建模拟失败消息
  • 在支付处理器上创建信用卡以返回模拟失败
  • 尝试创建一张信用卡,模拟支付处理器返回失败状态,并断言我的内部保存/创建方法在这些情况下会抛出错误

我应该说这个测试代码包括除了 minitest 之外的东西,比如 FactoryGirl,以及(我认为)shoulda 和 mocha 匹配器。换句话说,上面显示的并不是严格的最小测试代码。

关于ruby-on-rails - minitest上的错误信息测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15974102/

相关文章:

ruby-on-rails - 未初始化的常量 Twitter::OAuth - 忽略某个地方的需求?

ruby-on-rails - SocketError:没有这样的文件或目录-/var/run/docker.sock的connect(2)

ruby - 字符串插值不打印变量值,而是打印精确的字符串

ruby - 如何在 ruby​​ 中获取屏幕分辨率

testing - 使用 Minitest 和身份验证进行功能测试

ruby-on-rails - 如何测试文件上传模型?

ruby-on-rails - 在 Rails 4 中处理重复发生的事件

ruby-on-rails - 有条件的 rails 字段

ruby-on-rails - 为什么我的 Rails Minitest 多态失败?

ruby-on-rails - Rake 测试未在 minitest 中获取 capybara 测试