Jasmin toBeUndefined
Je suis nouveau sur le Jasmin et assumé à l'aide de la .not.toBeDefined()
ou .toBeUndefined()
correspond, vous pouvez vérifier si une variable est undefined
:
describe('toBeDefined', function() {
it('should be defined', function() {
var obj = {};
expect(obj).toBeDefined(); //Passes
});
it('should not be defined using .not.tobeDefined()', function() {
//var obj = {};
expect(obj).not.toBeDefined(); //Fails //ReferenceError: obj is not defined
});
it('should not be defined using .tobeUnefined()', function() {
//var obj = {};
expect(obj).toBeUndefined(); //Fails //ReferenceError: obj is not defined
});
});
Je suis complètement d'obtenir que ce serait un échec dans le code, mais j'ai supposé que l'utilisation de ces matchs, il ne serait pas. Je suis juste à l'aide de ces faux, ou n'est-il pas possible d'écrire une spécification pour vérifier si quelque chose est undefined
?
- Cette erreur est déterminée par la ecmasceipt moteur qui, par nature, jette depuis que vous accédez à un non-défini la variable. C'est tout à fait attendu qu'il n'est pas Jasmine est la faute de. C'est la façon dont la langue se comporte.
Vous devez vous connecter pour publier un commentaire.
Le problème est que
échoue avant l'appel à Jasmine arrive même. Il est erroné de faire référence à une variable qui n'est pas défini (dans les nouveaux navigateurs ou en "strict" mode au moins).
Essayer cette configuration à la place:
Dans ce code, il y a une variable "obj" dont la valeur est un objet vide. C'est OK en JavaScript pour faire référence à une propriété qui n'existe pas, d'un objet, et parce qu'une telle référence dans
undefined
le test passe. Une autre façon de faire serait:expect(typeof obj).toBe('undefined')
Noter que votre erreur dit qu'
obj is not defined
.Il ne dit pas que l'obj est undefined.
undefined est en fait un type de données en Javascript.
Toute variable déclarée sans une affectation est donné une valeur de undefined par défaut, mais que la variable doit être déclarée.
Donc quand Jasmin teste si une valeur est undefined, c'est de déterminer si
obj === undefined
.Si vous déclarez
puis
obj
permettra de tester comme indéfini.Si vous ne déclarez pas
obj
, alors il n'y a rien pour le Jasmin comparateur pour comparer le type de données de undefined.