2012-07-13 11 views
13

Estaba tratando de probar la consiguiente creación/eliminación de elementos (en mongoDB a través de mangosta).Jasmine (mocha) anidado "it" prueba

El problema de que la creación es asíncrona y devuelve ID del elemento creado en la función de devolución de llamada, necesito este ID para eliminar el elemento creado, así que probé el siguiente código para mocha (de diferentes maneras) pero no funcionó.

describe('Item Model', function(){ 

    it('should be able to create item', function(done){ 
    var item = new Item({name: {first: "Alex"}); 
    item.save(function(err, data){ 

     it('should be able to deleted created item', function(done){      
     Item.delete({_id: data.id}, function(err, data){ 
     done(err); 
     }); 
     }); 

    }) 
    }); 

}); 

¿Se puede implementar dicha prueba en mocha o jazmín?

Respuesta

7

Tendría dos pruebas para eso. Uno que está probando insert y otro que prueba eliminar.

debería ser algo como esto en CoffeeScript

describe 'Item model',() -> 
    item = '' 
    before (done) -> 
     item = new Item {name: {first: "Alex"}} 
     done 
    describe 'When inserting Item',() -> 
     before (done) -> 
      item.save done 
     it 'should have been insterted' -> 
      #CHECK HERE IT IF IT IS INSERTED 

    decribe 'when deleting',() -> 
     before (done) -> 
      item.save (err,data) -> 
       return done err if err 
       Item.delete {_id: data.id}, done 
     it 'should have been deleted' -> 
      #CHECK HERE IT IF IT IS Deleted 
+0

Ok, lo intentaré. Gracias. – WHITECOLOR

+15

Todavía me gustaría si se puede hacer lo anidado. – Zlatko

+45

Es una mala práctica responder preguntas de JavaScript con las respuestas de CoffeeScript. Adoro CoffeeScript, pero no todos los programadores de JS pueden leerlo y entenderlo. –

4

ver este tema: https://github.com/visionmedia/mocha/issues/438

Parece que la intención es forzar las pruebas para ser desacoplados. Si bien es incómodo y posiblemente requiera más burla, este comportamiento es útil porque requiere menos reevaluaciones y proporciona una imagen más clara de qué es exactamente lo que está fallando.

es decir, hay 2 pruebas, la prueba A y la prueba B, donde B es dependiente de A.

roturas de ensayo A, B, por tanto, rompiendo así. Arregla lo que está quebrando la prueba A, pero ahora puede sorprenderse al descubrir que la prueba B se rompió en el proceso de corrección, o por una razón no relacionada.

Cuando las pruebas no dependen entre sí, tiene mejor información y menos sorpresas.

Cuestiones relacionadas