Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

ReferenceError: Consulta is not defined

Meu arquivo SpecRunner.html está definido como

<!DOCTYPE HTML>
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <title>Jasmine Spec Runner v2.0.0</title>

  <link rel="shortcut icon" type="image/png" href="lib/jasmine-2.0.0/jasmine_favicon.png">
  <link rel="stylesheet" type="text/css" href="lib/jasmine-2.0.0/jasmine.css">

  <script type="text/javascript" src="lib/jasmine-2.0.0/jasmine.js"></script>
  <script type="text/javascript" src="lib/jasmine-2.0.0/jasmine-html.js"></script>
  <script type="text/javascript" src="lib/jasmine-2.0.0/boot.js"></script>

  <!-- include src files here... -->
  <script type="text/javascript" src="src/MaiorEMenor.js"></script>
  <script type="text/javascript" src="src/Paciente.js"></script>
  <script type="text/javascript" src="src/Consulta.js"></script>

  <!-- include spec files here... -->
  <script type="text/javascript" src="spec/MaiorEMenorSpec.js"></script>
  <script type="text/javascript" src="spec/PacienteSpec.js"></script>
  <script type="text/javascript" src="spec/ConsultaSpec.js"></script>

</head>

<body>
</body>
</html>

ConsultaSpec.js esá definido como

describe('Consulta', () => {

  it('Consultas de retorno devem ter valor zero', () => {
    var alceu = new Paciente('Alceu Valência', 30, 70, 1.70);
    var consulta = new Consulta(alceu, [], true, true);

    expect(consulta.preco()).toEqual(0);
  });
})

E Consulta.js contém o código

function Consulta(paciente, procedimentos, particular, consultaDeRetorno) {
  var classe = {

    preco: () => {
      if(consultaDeRetorno) return 0;

      var precoFinal = 0;

      procedimentos.forEach((procedimento) => {
        if("raio-x" === procedimento) precoFinal += 55;
        elseif ("gesso" === procedimento) precoFinal += 32;
        else precoFinal += 25;
      })

      if(particular) precoFinal *= 2;

      return precoFinal;
    }

  }

  return classe;
}

Ainda assim, a classe Consulta não é reconhecida no escopo de ConsultaSpec.js, gerando o erro

ReferenceError: Consulta is not defined
    at Object.it (file:///home/fhr/workspace/cursoTestesJasmine/jasmine-standalone-2.0.0/spec/ConsultaSpec.js:5:24)
    at attemptSync (file:///home/fhr/workspace/cursoTestesJasmine/jasmine-standalone-2.0.0/lib/jasmine-2.0.0/jasmine.js:1510:12)
    at QueueRunner.run (file:///home/fhr/workspace/cursoTestesJasmine/jasmine-standalone-2.0.0/lib/jasmine-2.0.0/jasmine.js:1498:9)
    at QueueRunner.execute (file:///home/fhr/workspace/cursoTestesJasmine/jasmine-standalone-2.0.0/lib/jasmine-2.0.0/jasmine.js:1485:10)
    at Spec.queueRunnerFactory (file:///home/fhr/workspace/cursoTestesJasmine/jasmine-standalone-2.0.0/lib/jasmine-2.0.0/jasmine.js:518:35)
    at Spec.execute (file:///home/fhr/workspace/cursoTestesJasmine/jasmine-standalone-2.0.0/lib/jasmine-2.0.0/jasmine.js:306:10)
    at Object.<anonymous> (file:///home/fhr/workspace/cursoTestesJasmine/jasmine-standalone-2.0.0/lib/jasmine-2.0.0/jasmine.js:1708:37)
    at attemptAsync (file:///home/fhr/workspace/cursoTestesJasmine/jasmine-standalone-2.0.0/lib/jasmine-2.0.0/jasmine.js:1520:12)
    at QueueRunner.run (file:///home/fhr/workspace/cursoTestesJasmine/jasmine-standalone-2.0.0/lib/jasmine-2.0.0/jasmine.js:1496:16)
    at QueueRunner.execute (file:///home/fhr/workspace/cursoTestesJasmine/jasmine-standalone-2.0.0/lib/jasmine-2.0.0/jasmine.js:1485:10)

Deve ser um erro de iniciante (e provavelmente seja um detalhe bobo que eu não tenha percebido), mas realmente estou trancado nessa parte. Alguém tem ideia do porquê isso acontece?

Obrigado pela ajuda!

2 respostas
solução!

Olá Fabrício,

fiz algumas alterações no Consulta.js:

function Consulta(paciente, procedimentos, particular, consultaDeRetorno) {

    var classe = {
        preco : function() {
            if(consultaDeRetorno) return 0;

            var precoFinal = 0;

            procedimentos.forEach(function(procedimento) {
                if("raio-x" == procedimento) precoFinal += 55;
                else if("gesso" == procedimento) precoFinal += 32;
                else precoFinal += 25;
            });

            if(particular) precoFinal *= 2;

            return precoFinal;
        }
    }

    return classe;
};

Acho que isso deve resolver o problema. Parece que o que estava causando o erro na função Consulta era um "elseif"escrito tudo junto.

Testei os outros códigos e não vi mais problemas. Veja se isso vai resolver aí pra você.

Leonardo,

Era exatamente isso. Obrigado!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software