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 #
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 esQuizCreate::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
:Luego, ejecute
bundle install
para instalar la gema.Finalmente, requiera la gema al principio de su archivo de prueba:
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.