O que assert
significa JavaScript?
Eu já vi algo como:
assert(function1() && function2() && function3(), "some text");
E gostaria de saber o que o método assert()
faz.
fonte
O que assert
significa JavaScript?
Eu já vi algo como:
assert(function1() && function2() && function3(), "some text");
E gostaria de saber o que o método assert()
faz.
Não existe assert
no JavaScript (ainda; fala-se em adicionar um , mas está em um estágio inicial). Talvez você esteja usando alguma biblioteca que fornece uma. O significado usual é gerar um erro se a expressão passada para a função for falsa; isso faz parte do conceito geral de verificação de asserção . Normalmente, as asserções (como são chamadas) são usadas apenas nas compilações "testing" ou "debug" e são removidas do código de produção.
Suponha que você tivesse uma função que deveria sempre aceitar uma string. Você gostaria de saber se alguém chamou essa função com algo que não era uma string. Então você pode fazer:
assert(typeof argumentName === "string");
... onde assert
geraria um erro se a condição fosse falsa.
Uma versão muito simples seria assim:
function assert(condition, message) {
if (!condition) {
throw message || "Assertion failed";
}
}
Melhor ainda, use o Error
objeto se o mecanismo JavaScript o suportar (os realmente antigos podem não), que tem a vantagem de coletar um rastreamento de pilha e assim:
function assert(condition, message) {
if (!condition) {
message = message || "Assertion failed";
if (typeof Error !== "undefined") {
throw new Error(message);
}
throw message; // Fallback
}
}
Até o IE8 possui Error
(embora não possua a stack
propriedade, mas os mecanismos modernos [incluindo o IE moderno] possuem ).
assert
.if(!condition)
configuração está emvar throwError=true;
seguidadebugger;
, envolva a seção throw em umif(throwError)
. Dessa forma, se o depurador estiver aberto, ele quebrará e, se desejar, posso definirthrowError
false e examinar todos os escopos ao sair.throw
. Dessa forma, você não precisa dadebugger;
declaração. Veja developer.chrome.com/devtools/docs/… para mais.if
por um operador condicional. De qualquer forma, no mundo de hoje, eu não me incomodaria em oferecer suporte a motores que não possuemError
.Se você estiver usando um navegador moderno ou nodejs, poderá usar
console.assert(expression, object)
.Para maiores informações:
fonte
console.error
o código continua sendo executado.console.assert
não é tão bom, a menos que tenha o mesmo comportamento dethrow
.console.assert
é porque as asserções não são funções de manipulação de erros. Eles são projetados para verificação de correção de código apenas durante o desenvolvimento. Tradicionalmente, eles são completamente desativados em ambientes de produção para evitar que os sistemas ativos sejam encerrados devido a algo trivial. O navegador é considerado um ambiente de produção, portantoconsole.assert
, não encerra a execução no local. Se você está confiando em asserções para interromper a execução, deve usar o tratamento de erros adequado, pois não é para isso que as asserções são destinadas.As outras respostas são boas: não há uma função assert embutida no ECMAScript5 (por exemplo, JavaScript que funciona basicamente em todos os lugares), mas alguns navegadores fornecem a você ou têm complementos que fornecem essa funcionalidade. Embora seja provavelmente melhor usar uma biblioteca bem estabelecida / popular / mantida para isso, para fins acadêmicos, uma função de "afirmação do pobre" pode ser algo como isto:
fonte
try
,catch
,throw
)assert()
não é uma função javascript nativa. É uma função personalizada que alguém criou. Você precisará procurá-lo em sua página ou em seus arquivos e publicá-lo para qualquer pessoa para ajudar a determinar o que está fazendo.fonte
verifique isto: http://net.tutsplus.com/tutorials/javascript-ajax/quick-tip-quick-and-easy-javascript-testing-with-assert/
é para testar JavaScript. Surpreendentemente, em apenas cinco ou seis linhas, esse código fornece um grande nível de poder e controle sobre seu código durante o teste.
A função assert aceita dois parâmetros:
resultado: um booleano, que indica se o teste foi aprovado ou reprovado
description: uma breve descrição do seu teste.
A função assert simplesmente cria um item da lista, aplica uma classe de "aprovação" ou "falha", dependendo se seu teste retornou verdadeiro ou falso, e depois anexa a descrição ao item da lista. Finalmente, esse bloco de código é adicionado à página. É uma loucura simples, mas funciona perfeitamente.
fonte
Aqui está uma implementação realmente simples de uma função assert. É preciso um valor e uma descrição do que você está testando.
Se o valor for avaliado como verdadeiro, ele passa.
Se retornar falso, falhará.
fonte
Se a asserção for falsa, a mensagem será exibida. Especificamente, se o primeiro argumento for falso, o segundo argumento (a mensagem da sequência) será registrado no console das ferramentas do desenvolvedor. Se o primeiro argumento for verdadeiro, basicamente nada acontece. Um exemplo simples: estou usando as Ferramentas do desenvolvedor do Google:
fonte
Provavelmente veio com uma biblioteca de testes que parte do seu código está usando. Aqui está um exemplo de um (é provável que não seja a mesma biblioteca que seu código está usando, mas mostra a ideia geral):
http://chaijs.com/guide/styles/#assert
fonte
A palavra ou função "afirmar" é usada principalmente no teste de partes do aplicativo.
As funções de declaração são uma maneira curta de instruir o programa a verificar a condição (também chamada de "asserção") e, se a condição não for Verdadeira, ocorrerá um erro.
Então, vamos ver como ficaria no "código normal"
if (typeof "string" === "array") { throw Error('Error: "string" !== "array"'); }
Com
assert
você pode simplesmente escrever:assert(typeof "string" === "array")
No Javascript, não há
assert
função nativa , então você precisa usar uma de alguma biblioteca.Para uma introdução simples, você pode verificar este artigo:
http://fredkschott.com/post/2014/05/nodejs-testing-essentials/
Espero que ajude.
fonte
A asserção lança uma mensagem de erro se o primeiro atributo for falso e o segundo atributo é a mensagem a ser lançada.
Existem muitos comentários dizendo que a asserção não existe no JavaScript, mas
console.assert()
é a função assert no JavaScript A idéia da asserção é descobrir por que / onde o erro ocorre.Aqui, dependendo da mensagem, você pode encontrar qual é o erro. Essas mensagens de erro serão exibidas no console na cor vermelha, como se chamamos
console.error();
Para ver mais funções no console, execute
console.log(console);
fonte
Respostas anteriores podem ser aprimoradas em termos de desempenho e compatibilidade.
Verifique uma vez se o
Error
objeto existe, se não o declare:Então, cada asserção verifica a condição e sempre lança um
Error
objetoLembre-se de que o console não exibirá o número da linha de erro real, mas a linha da
assert
função, que não é útil para depuração.fonte
Se você usar Webpack, você pode simplesmente usar a biblioteca afirmação node.js . Embora eles afirmem que "não se destina a ser uma biblioteca de asserções de uso geral", parece ser mais do que aceitável para asserções ad hoc, e parece que não existe nenhum concorrente no espaço do Node (o Chai foi projetado para testes de unidade).
Você precisa usar o webpack ou o browserify para poder usá-lo, portanto, obviamente, isso só será útil se eles já estiverem no seu fluxo de trabalho.
fonte
Além de outras opções, como console.assert ou rolando por conta própria , você pode usar invariáveis . Tem algumas características únicas:
%s
especificador).fonte
Conforme mencionado por TJ, não há
assert
no JavaScript. No entanto, existe um módulo de nó chamado assert , que é usado principalmente para teste . então, você pode ver código como:fonte