如何使用来自外部服务的验证存根模型

How to stub a model with a validation from external service

这里我们有一个具有多个验证的客户模型,其中一个验证访问外部服务以验证此人是否存在。

我们在这里测试所有验证:

describe Customer do

   it 'is not valid without a name' do
      customer = build_stubbed(:customer, name: nil)
      customer.valid?
      asserts...
   end

   it 'is not valid without a full name' do
      customer = build_stubbed(:customer, name: 'Test')
      customer.valid?
      asserts...
   end

   if 'should check if user really exists' do
      customer = build_stubbed(:customer, doc_id: '00000000')
      customer.valid?
      asserts....
   end

   other tests...

最后一项使用 doc_id 测试外部服务验证以检查此人是否存在,但这里每个测试都会运行所有验证,所以我应该 stub_request 服务请求之前还是在其中存根每个测试?

例如,您应该使用 context to specify which test uses the stup and which does not. That's advised here。这样,您将能够拥有一个存根方法的上下文,并在其他上下文中使用外部服务测试验证。