2015-04-01 13 views
6

voglio fare una semplice affermazione di qualcosa comenodo di matrice moka dovrebbe contenere un elemento

knownArray.should.include('known value') 

La matrice è corretto, ma ho semplicemente non riesco a capire la giusta asserzione da utilizzare per verificare se la matrice ha questo valore (l'indice non ha importanza). Ho anche provato should.contain ma entrambe queste genera un errore che Object #<Assertion> has no method 'contain' (o 'include')

Come posso controllare che un array contiene un elemento utilizzando should?

risposta

13

Should.js ha il metodo containEql. Nel tuo caso:

knownArray.should.containEql('known value'); 

I metodi include, includes e contain si troverebbero in chai.js.

+0

che è piuttosto fresco: +1: – Andbdrew

+0

hi @rodrigo, come ad eguagliare due matrici in dovrebbe? –

+1

@KoustuvSinha, dipende da cosa consideri un'uguaglianza tra due array. Sono uguali se tutti gli elementi sono uguali, ma in un ordine diverso? O l'ordine conta? Questo problema potrebbe essere più delicato di quanto tu abbia considerato. Dai un'occhiata a [this queestion here] (http://stackoverflow.com/questions/7837456/comparing-two-arrays-in-javascript) o anche in librerie come [LoDash] (https://lodash.com/) , che fornisce molte utili funzioni, come il metodo [isEqual] (https://lodash.com/docs#isEqual). Se questo non risponde alla tua domanda, fai una nuova domanda in SO, sarò lieto di discuterne. –

0

Mostly from the mocha docs, si può fare

var assert = require('assert'); 
var should = require('should'); 

describe('Array', function(){ 
    describe('#indexOf(thing)', function(){ 
    it('should not be -1 when thing is present', function(){ 
     [1,2,3].indexOf(3).should.not.equal(-1); 
    }); 
    }); 
}); 

o se non vi dispiace non usando dovrebbe, si può sempre fare

assert.notEqual(-1, knownArray.indexOf(thing));