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

"persona is not defined"

Tentei criar um test data builder pra ver se era capaz de escrever o código necessário e usar o framework, mas após rodar o jasmine me foi notificado que na função constrói do meu persona builder na linha q retorna a função persona o runner não encontrou o arquivo, acredito que seja na tag script q tem att src do html spec runner. Segue-se o código(retirei as diversas variáveis que tinha do builder pra deixar o código mais enxuto possível):

function Persona(){
  var clazz = {
homeostaseConst:-4;
homeostaseFunc:0;
var hmstF=homeostaseFunc;
var hmstC=homeostaseConst;
vital:function(hmeostFunc,hmeostConst){
    if(hmeostFunc==="-4"||hmeostConst==="-4"){
      return "dead";
    } else return "alive";
  };
}
return clazz;
}

function PersonaBuilder(){

  var clazz = {
    constroi: function(){
      return Persona();
    },
};
  return clazz
}


describe("Persona", function(){
  var opala;
  beforeEach(function(){
    opala= new PersonaBuilder().constroi();
  });

  it("Should tell that the person is alive...", function(){
    var vital= opala.vital();
    expect(vital).toEqual("dead");
  });
});
  <!-- include source files here... -->
  <script type="text/javascript" src="src/Player.js"></script>
  <script type="text/javascript" src="src/Song.js"></script>
  <script type="text/javascript" src="src/Persona.js"></script>




  <!-- include spec files here... -->
  <script type="text/javascript" src="spec/SpecHelper.js"></script>
  <script type="text/javascript" src="spec/PlayerSpec.js"></script>
  <script type="text/javascript" src="spec/PersonaBuilder.js"></script>
  <script type="text/javascript" src="spec/PersonaSpec.js"></script>

obrigado pela atenção, gostaria muito de uma ajuda

9 respostas

Posta o erro que está dando no console do browser

Erro:

SCRIPT1009: SCRIPT1009: Expected '}'

Parece que está faltando alguma chave segundo o erro, mas às vezes os erros nos dão pistas falsas ou genéricas demais.

Estou sem ideias, preciso estudar mais sobre esse assunto. Algum instrutor poderia nos ajudar a chegar nessa solução?

reli o código varias vezes, inclusive escrevi ele denovo, vou checar por chaves se for isso (de ser uma chave)

edit: nada de chaves ou ponto ou virgula, parêntesis..... André, você chegou a escrever o "mesmo" código? Deu o mesmo erro também?

Oi, só vi seu edit agora porque edits não são alertados por e-mail.

Não tentei escrever o mesmo código (ainda to estudando Jasmine e não cheguei nessa aula, mas resolvi ajudar porque sei Javascript). Só pra excluir problema de infraestrutura você já conseguiu usar o Jasmine em outro código?

André, Os arquivos src e spec que já vieram no Jasmine funcionaram...

o código a seguir rodou sem problemas, mas quando escrevo deadPerson.vital no console me retorna undefined ao invés de uma string:

<!DOCTYPE html>
<html>
<body>
<script>
function Persona(){
  var clazz = {
homeostaseConst:-4,
homeostaseFunc:0,
vital:function(){
    if(homeostaseConst==="-4"||homeostaseFunc==="-4"){
      return "dead";
    } else return "alive";
  }
}
return clazz;
}

function PersonaBuilder(){

  var clazz = {
    constroi: function(){
      return new Persona();
    },
};
  return clazz
}
let deadPerson = PersonaBuilder();
</script>
</body>
</html>

Vou tentar deixar a minha pasta do jasmine igual a sua para fazer os testes melhor.

Você consegue me passar os arquivos

  <script type="text/javascript" src="spec/PersonaBuilder.js"></script>
  <script type="text/javascript" src="spec/PersonaSpec.js"></script>
  <script type="text/javascript" src="src/Persona.js"></script>
solução!

segue-se os códigos:

function Persona(nome,
homeostaseConst:homeostaseConst,
homeostaseFunc:homeostaseFunc,
vital: function(){
  return "alive";
}
}
return clazz;
}
\\persona.js (src)

function PersonaBuilder(){
var nome="Opala";
var homeostaseConst="0";
var homeostaseFunc="0";

  var clazz = {
    constroi: function(){
      return Persona(nome,
    homeostaseConst,
    homeostaseFunc);
    },
    comNome: function(valor){
      nome= valor;
      return this;
    },
    comHomeostaseConst: function(valor){
      homeostaseConst= valor;
      return this;
    },
    comHomeostaseFunc: function(valor){
      homeostaseFunc= valor;
      return this;
    }
};
  return clazz;
}

\\ personabuider,js (spec)


describe("Persona", function(){
  var opala;
  beforeEach(function(){
    opala= PersonaBuilder().constroi();
  });

  it("Should tell that the person is alive...", function(){
    var vital= opala.vital();
    expect(vital).toEqual("alive");


  });
});

\\personaspec.js (spec)

com esse código funcionou, o problema era principalmente o ";" no lugar da "," separando as propriedades.