Quero confirmar que um valor é decimal (ou 0), então o número deve ser maior ou igual a zero e menor que 1.
describe('percent',function(){
it('should be a decimal', function() {
var percent = insights.percent;
expect(percent).toBeGreaterThan(0);
expect(percent).toBeLessThan(1);
});
});
Como imito "> = 0"?
javascript
tdd
jasmine
Bryce Johnson
fonte
fonte
expect(percent).not.toBeLessThan(0);
Respostas:
Achei que deveria atualizar isso, já que a API mudou nas versões mais recentes do Jasmine. A API Jasmine agora tem funções integradas para:
Você deve usar essas funções em preferência ao conselho abaixo.
Clique aqui para obter mais informações sobre a API de matchers Jasmine
Eu sei que essa é uma questão antiga e resolvida, mas percebi que uma solução bastante simples foi perdida. Como maior ou igual a é o inverso da função menor que, tente:Nessa abordagem, o valor da porcentagem pode ser retornado por uma função assíncrona e processado como parte do fluxo de controle.fonte
expect(2 + 2).not.toBe(5)
,expect(2 + 2).toBeGreaterThan(0)
,expect(2 + 2).toBeLessThan(5)
expect(NaN).not.toBeLessThan(0);
passa em vez de falhar. (not.toBeLessThan
é apenas o inverso se você assumir quepercent
é um número. Caso contrário, não é o inverso.)Você só precisa executar a operação de comparação primeiro e, em seguida, verificar se ela é verdadeira.
fonte
since('expected percent to be greater than or equal to zero').expect(percent >= 0).toBeTruthy();
>=
, eu prefiro um matcher personalizado porque mantém os testes organizados (fácil de fazer, veja minha resposta abaixo), mas para comparações que surgem com menos frequência, ou não são expressivas o suficiente, esse plug-in parece ser exatamente o coisa certa. Obrigado!expect(percent).toBeGreaterThan(-1);
xD Eu não experimenteiA versão atual do Jasmine oferece suporte a toBeGreaterThan e toBeLessThan.
fonte
Um tanto estranho, esta não é uma funcionalidade básica
Você pode adicionar um matcher personalizado como este:
JasmineExtensions.js
Na verdade, você está definindo um construtor para seu matcher - é uma função que retorna um objeto matcher.
Inclua isso antes de 'inicializar'. Os matchers básicos são carregados no momento da inicialização.
Seu arquivo html deve ter a seguinte aparência:
Em seguida, em seu boot.js, adicione a chamada para adicionar os matchers após jasmine ter sido definido, mas antes de jasmine.getEnv (). Get env é, na verdade, uma chamada de configuração (com um nome um tanto enganador).
Os matchers são configurados na chamada para setupCoreMatchers no construtor Env.
Eles mostram outra maneira de adicionar correspondências customizadas nos testes de amostra; no entanto, a maneira como funciona é recriar os correspondências antes de cada teste usando um
beforeEach
. Isso parece horrível, então pensei em usar essa abordagem.fonte
Estou atrasado para isso, mas postando apenas no caso de alguém ainda visitar esta questão em busca de respostas, estou usando Jasmine versão 3.0 e como mencionado por @Patrizio Rullo você pode usar toBeGreaterThanOrEqual / toBeLessThanOrEqual .
Ele foi adicionado na versão 2.5 de acordo com as notas de lançamento - https://github.com/jasmine/jasmine/blob/master/release_notes/2.5.0.md
Por exemplo
ou
fonte
Encontrei o mesmo problema hoje e, ao que parece, não é tão difícil adicionar um matcher personalizado para ele. A principal vantagem de um matcher customizado é que ele pode retornar mensagens significativas quando um teste falha.
Então aqui está o código para dois matchers
.toBeAtLeast()
e.toBeAtMost()
, caso ajude alguém.fonte
Foi apenas mesclado no branch master Jasmine GitHub meu patch para adicionar os matchers de que você precisa:
Adicionar correspondências toBeGreatThanOrEqual e toBeLessThanOrEqual
Mas não tenho ideia de qual lançamento será. Enquanto isso, você pode tentar usar o código do meu commit em sua cópia local do Jasmine.
fonte
Recomendo usar este plug-in Jasmine: https://github.com/JamieMason/Jasmine-Matchers
fonte
Você pode usar a função
least
para verificar se um valor é maior ou igual a algum outro valor.Um alias de
least
égte
(maior ou igual a). Vice-versa, você pode usarlte
(menor ou igual a) para verificar o oposto.Então, para responder à pergunta, você pode fazer:
expect(percent).to.be.gte(0)
fonte
TypeError: Cannot read property 'be' of undefined
paraexpect(1).to.be.gte(-1);