2012-02-19 24 views
20

Estoy comenzando un proyecto nodejs y me gustaría hacer BDD con Mocha y Zombiejs. Lamentablemente, soy nuevo en casi todas las palabras de moda de esa frase. Puedo hacer bien las pruebas de Mocha y Zombiejs, pero parece que no puedo integrar las dos: ¿es posible usar Mocha para ejecutar las pruebas de Zombiejs y, de ser así, cómo se vería?Mocha y ZombieJS

Solo busco "hello world" para comenzar, pero un tutorial/ejemplo sería incluso mejor.

Gracias!

+0

¿Fue mi respuesta lo que tenía en mente? – Industrial

+0

Sí, eso es lo que quería. ¡Gracias! – Joel

Respuesta

36

Asumiendo que ya ha instalado mocha, zombie y expect.js acuerdo con las instrucciones, esto debería funcionar para usted:

// Put below in a file in your *test* folder, ie: test/sampletest.js: 

var expect = require('expect.js'), 
Browser = require('zombie'), 
browser = new Browser(); 

describe('Loads pages', function(){ 

    it('Google.com', function(done){ 

     browser.visit("http://www.google.com", function() { 
      expect(browser.text("title")).to.equal('Google'); 
      done(); 
     }); 
    }); 

}); 

, entonces debería ser capaz de ejecutar el comando mocha de su carpeta raíz de la aplicación:

# mocha -R spec 

    Loads pages 
    ✓ Google.com (873ms) 


    ✔ 1 tests complete (876ms) 

Nota: Si sus pruebas siguen fallando debido a tiempos de espera, ayuda a aumentar mocha 'st para establecer un poco usando el argumento -t. Consulte la documentación de mocha para obtener detalles completos.

+0

tenga en cuenta que zombiejs falla si se usa con nodejs 0.10.xx debido a este problema https://github.com/assaf/zombie/issues/487 vítores –

+4

¡Tenga en cuenta que el problema parece estar resuelto! –

7

Escribí una larga respuesta a esta pregunta que explicaba las capturas importantes sobre pruebas asincrónicas, buenas prácticas ('before()', 'after()', TDD, ...), e ilustradas por un ejemplo del mundo real.

http://redotheweb.com/2013/01/15/functional-testing-for-nodejs-using-mocha-and-zombie-js.html

+1

¿Alguna vez movió esta publicación? – Alex

+0

¡Ah, realmente quería leer esto también! No se supone que lo moviste a Posthaven, ¿verdad? –

+0

Tee hee, hilo zombie. Artículo movido: http://redotheweb.com/2013/01/15/functional-testing-for-nodejs-using-mocha-and-zombie-js.html –

-1

Si está utilizando Microsoft Visual Studio, es posible que desee echar un vistazo a Rob Ashton Zombify. Todo está aceptablemente integrado para que pueda comenzar a escribir sus casos de prueba en JavaScript o CoffeeScript. Por cierto, aprender CoffeeScript te llevará una hora y vale la pena cada minuto.

1

si desea utilizar pepino-js para sus pruebas de aceptación y mocha para sus pruebas de "unidad" para una página, puede usar cuked-zombie (disculpe la publicidad).

instalarlo como se describe en el readme en GitHub, pero Coloca el mundo de configuración en un archivo llamado-config.js mundo

`/* globals __dirname */ 
var os = require('os'); 
var path = require('path'); 

module.exports = { 
    cli: null, 
    domain: 'addorange-macbook': 'my-testing-domain.com', 
    debug: false 
}; 

A continuación, utilice moka con el zombi en las pruebas unitarias como esto:

var chai = require('chai'), expect = chai.expect; 
var cukedZombie = require('cuked-zombie'); 

describe('Apopintments', function() { 

    describe('ArrangeFormModel', function() { 
    before(function(done) { // execute once 
     var that = this; 

     cukedZombie.infectWorld(this, require('../world-config')); 

     this.world = new this.World(done); 

     // this inherits the whole world api to your test 
     _.merge(this, this.world); 
    }); 

    describe("display", function() { 

     before(function(done) { // executed once before all tests are run in the discribe display block 
     var test = this; 
     this.browser.authenticate().basic('maxmustermann', 'Ux394Ki'); 

     this.visitPage('/someurl', function() { 
      test.helper = function() { 

      }; 

      done(); 
     }); 
     }); 

     it("something on the /someurl page is returned", function() { 
     expect(this.browser.html()).not.to.be.empty; 
     }); 
Cuestiones relacionadas