我使用 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/