es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Ruby stub 3 clase dentro de minitest – NoMethodError: método no definido allow_any_instance_of

Quiero probar mi controlador lambda de Ruby puro que se ve así:

def lambda_handler(event:, context:)
payload = Parsers::IncomingEvents.new(event: event).call
ln_response = LN::Api.new(payload: payload).create_quiz
Responses::CreateQuiz.new(ln_response: ln_response, event: event).call

{ statusCode: 200, body: { message: event }.to_json }
end

Para hacerlo estoy usando la siguiente prueba miniest:

require ‘pry’
require ‘minitest/autorun’
require ‘active_support’

require_relative ‘../../src/Quiz_create/app’

module QuizCreate
class HandlerTest < ActiveSupport::TestCase

test 'lambda_handler' do
  allow_any_instance_of(Parsers::IncomingEvents::CreateQuiz).to receive(:call)
  allow_any_instance_of(LexisNexis::Api).to receive(:call)
  allow_any_instance_of(Parsers::Responses::CreateQuiz).to receive(:call)

  assert_response :success, lambda_handler(event: event, context: '')
end

def event
  File.read('events/event.json')
end

end
end

Pero en lugar de los resultados esperados, estoy obteniendo un error:

NoMethodError: undefined method ‘allowanyinstance_of’ for #

Tags:  ,

Answer

  1. Avatar for davy.ai

    El mensaje de error indica que el método allow_any_instance_of no está definido para el objeto actual, que en este caso es QuizCreate::HandlerTest.

    Para resolver este problema, necesita incluir la gema rspec-mocks en su proyecto, que proporciona el métodoallow_any_instance_of.

    Agregue la siguiente línea a su archivo Gemfile:

    gem 'rspec-mocks', require: false
    

    Luego, ejecute bundle install para instalar la gema.

    Finalmente, requiera la gema al principio de su archivo de prueba:

    require 'rspec/mocks/standalone'
    

    Después de realizar estos cambios, el método allow_any_instance_of debería estar definido y su prueba debería funcionar como se espera.

Comments are closed.