Je veux confirmer qu'une valeur est un décimal (ou 0), donc le nombre doit être supérieur ou égal à zéro et inférieur à 1.
describe('percent',function(){
it('should be a decimal', function() {
var percent = insights.percent;
expect(percent).toBeGreaterThan(0);
expect(percent).toBeLessThan(1);
});
});
Comment imiter "> = 0"?
javascript
tdd
jasmine
Bryce Johnson
la source
la source
expect(percent).not.toBeLessThan(0);
Réponses:
J'ai pensé que je devrais mettre à jour cela car l'API a changé dans les nouvelles versions de Jasmine. L'API Jasmine a maintenant des fonctions intégrées pour:
Vous devez utiliser ces fonctions de préférence aux conseils ci-dessous.
Cliquez ici pour plus d'informations sur l'API Jasmine Matchers
Je sais que c'est une question ancienne et résolue, mais j'ai remarqué qu'une solution assez soignée avait été manquée. Puisque supérieur ou égal à est l'inverse de la fonction inférieure à, essayez:Dans cette approche, la valeur de pourcentage peut être renvoyée par une fonction asynchrone et traitée dans le cadre du flux de contrôle.la source
expect(2 + 2).not.toBe(5)
,expect(2 + 2).toBeGreaterThan(0)
,expect(2 + 2).toBeLessThan(5)
expect(NaN).not.toBeLessThan(0);
réussit au lieu d'échouer. (not.toBeLessThan
n'est que l'inverse si vous supposez qu'ilpercent
s'agit d'un nombre. Sinon, ce n'est pas l'inverse.)Il vous suffit d'exécuter d'abord l'opération de comparaison, puis de vérifier si elle est véridique.
la source
since('expected percent to be greater than or equal to zero').expect(percent >= 0).toBeTruthy();
>=
, je préfère un matcher personnalisé car il garde les tests épurés (assez facile à faire, voir ma réponse ci-dessous), mais pour les comparaisons qui apparaissent moins fréquemment, ou qui ne sont pas assez expressives, ce plugin semble être exactement le bonne chose. Merci!expect(percent).toBeGreaterThan(-1);
xD je n'ai pas essayéLa version actuelle de Jasmine prend en charge toBeGreaterThan et toBeLessThan.
la source
Un peu étrange, ce n'est pas une fonctionnalité de base
Vous pouvez ajouter un matcher personnalisé comme celui-ci:
JasmineExtensions.js
En fait, vous définissez un constructeur pour votre matcher - c'est une fonction qui renvoie un objet matcher.
Incluez-le avant de «démarrer». Les matchers de base sont chargés au moment du démarrage.
Votre fichier html devrait ressembler à ceci:
Ensuite, dans votre boot.js, ajoutez l'appel pour ajouter les correspondants après que jasmine a été défini mais avant jasmine.getEnv (). Get env est en fait un appel de configuration (nommé légèrement).
Les correspondants sont configurés lors de l'appel à setupCoreMatchers dans le constructeur Env.
Ils montrent une autre façon d'ajouter des matchers personnalisés dans les exemples de tests, mais la façon dont cela fonctionne est de recréer le (s) matcher (s) avant chaque test à l'aide d'un fichier
beforeEach
. Cela semble assez horrible, alors j'ai pensé que j'opterais plutôt pour cette approche.la source
Je suis en retard mais je le poste juste au cas où quelqu'un visite encore cette question à la recherche de réponses, j'utilise Jasmine version 3.0 et comme mentionné par @Patrizio Rullo, vous pouvez utiliser toBeGreaterThanOrEqual / toBeLessThanOrEqual .
Il a été ajouté dans la version 2.5 selon les notes de publication - https://github.com/jasmine/jasmine/blob/master/release_notes/2.5.0.md
Pour par exemple
ou
la source
J'ai rencontré le même problème aujourd'hui, et il s'avère qu'il n'est pas si difficile d'ajouter un matcher personnalisé pour cela. Le principal avantage d'un matcher personnalisé est qu'il peut renvoyer des messages significatifs lorsqu'un test échoue.
Voici donc le code pour deux correspondants,
.toBeAtLeast()
et.toBeAtMost()
, au cas où cela aiderait quelqu'un.la source
Il a juste été fusionné dans la branche principale de Jasmine GitHub mon patch pour ajouter les correspondants dont vous avez besoin:
Ajouter les correspondances toBeGreatThanOrEqual et toBeLessThanOrEqual
Mais je n'ai aucune idée de la version dans laquelle ce sera. En attendant, vous pouvez essayer d'utiliser le code de mon commit dans votre copie locale de Jasmine.
la source
Je recommande d'utiliser ce pluging Jasmine: https://github.com/JamieMason/Jasmine-Matchers
la source
Vous pouvez utiliser la fonction
least
pour vérifier si une valeur est supérieure ou égale à une autre valeur.Un alias de
least
isgte
(supérieur ou égal à). Vice versa, vous pouvez utiliserlte
(inférieur ou égal à) pour vérifier le contraire.Donc, pour répondre à la question, vous pouvez faire:
expect(percent).to.be.gte(0)
la source
TypeError: Cannot read property 'be' of undefined
pourexpect(1).to.be.gte(-1);