¿Por qué solo está sacando de la cola 'primero' en lugar de 'primero en la fila'? Como puede ver en el siguiente resultado de la prueba, el valor esperado es "primero en la fila", pero el valor recibido es solo "primero", ¿qué está pasando?
esta es mi clase de cola:
function Queue() {} Queue.prototype.arr = []; Queue.prototype.sz = 0; Queue.prototype.enqueue = function(n) { this.sz++; this.arr.push(n); } Queue.prototype.dequeue = function() { if(this.sz === 0) { return undefined; } else if(this.sz > 0){ this.sz--; return this.arr.shift(); } } Queue.prototype.size = function() { return this.sz; }esta es mi prueba:
it('returns queued string', function() { queue.enqueue('first in line'); expect(queue.size()).toBe(1); expect(queue.dequeue()).toBe('first in line'); });y este es el resultado de la prueba:
● returns queued string expect(received).toBe(expected) // Object.is equality Expected: "first in line" Received: "first" 76 | queue.enqueue('first in line'); 77 | expect(queue.size()).toBe(1); > 78 | expect(queue.dequeue()).toBe('first in line'); | ^Ok, así es como lo resolví, lo reescribí así:
class Queue { constructor() { this.arr = []; this.sz = 0; } enqueue(n) { this.sz++; this.arr.push(n); } dequeue() { if(this.sz === 0) { return undefined; } else if(this.sz > 0){ this.sz--; return this.arr.shift(); } } size() { return this.sz; } }