2012-04-04 12 views
6

Estoy compilando una aplicación Backbone y necesito pruebas automáticas. Prefiero no usar selenio para las pruebas automatizadas.Qué BDD para aplicaciones backbone JS que admite pruebas automatizadas

Estoy buscando en Jasmine y Cucumber.js. Creo que Jasmine podría ser mejor, pero en la empresa donde trabajo utilizan pepino para las pruebas del lado del servidor y estoy investigando si se puede usar cucumber.js para la producción.

¿Alguna sugerencia?

+0

¿Qué quiere decir con las pruebas automatizadas. Pregunto porque mencionas Selenium, que es para pruebas de integración, y Jasmine, que es para pruebas unitarias. –

+0

Lo que quiero decir es que quiero que mis pruebas se ejecuten de manera automática sin tener que probar cada función en el navegador manualmente. Pensé que Jasmine es una herramienta de BDD. – chchrist

Respuesta

10

Cucumber.js es bastante estable y está listo para ser utilizado en producción. Carece de algunas funciones avanzadas en comparación con el rubí de pepino, como contornos de escenarios y (ahora disponible) se transforma. Vea el README para la tabla de estado de desarrollo.

Se puede usar con Zombie.js, Phantom.js, Selenium e incluso dentro de los navegadores. Prácticamente, puede usar cualquier biblioteca de afirmación/prueba dentro de sus definiciones de pasos de Cucumber.

Como Andreas señaló, Jasmine está destinada a pruebas/especificaciones unitarias, mientras que Cucumber es una herramienta de prueba de aceptación (que afecta a toda la pila de aplicaciones).

Si necesita ayuda para comenzar a utilizar Cucumber.js, no dude en hacerme un ping (@jbpros en Twitter, jbpros en Freenode/# pepino).

0

Ambos, busterjs y jstestdriver, pueden iniciar allí el servidor que aloja la página de prueba. Todo lo que tienes que hacer es iniciar tus navegadores automáticamente y abrir la página de prueba. La prueba se ejecutará en el navegador e informará el resultado nuevamente al servidor donde, por ejemplo, se puede guardar en un formato legible por el experto. Tenga en cuenta que también hay un complemento Maven para Jasmine

+1

También vale la pena mencionar que el jazmín también puede correr sin cabeza con phantomjs – ggozad

1

No tengo suficientes puntos para agregar un comentario a @jbpros respuesta, pero debe tener en cuenta que Scenario Outlines ahora se completan en cucumber.js como se indica here.

Por ejemplo:

Mundial:

// features/support/world.js 

var zombie = require('zombie'); 
var World = function World(callback) { 
    this.browser = new zombie(); // this.browser will be available in step definitions 

    this.visit = function(url, callback) { 
    this.browser.visit(url, callback); 
    }; 

    callback(); // tell Cucumber we're finished and to use 'this' as the world instance 
}; 
exports.World = World; 

Característica:

Scenario Outline: eating 
    Given there are <start> cucumbers 
    When I eat <eat> cucumbers 
    Then I should have <left> cucumbers 

Examples: 
    | start | eat | left | 
    | 12 | 5 | 7 | 
    | 20 | 5 | 15 | 
    | 200 | 65 | 135 | 
    | 200 | 5 | 194 | 

Pasos Definición:

var aTest = function() { 
this.World = require("../support/world.js").World; 

this.start = 0; 
this.eat = 0; 

this.Given(/^there are (\d+) cucumbers$/, function(number, next) { 
    this.start = parseInt(number); 
    callback(); 
}); 

this.When(/^I eat (\d+) cucumbers$/, function (number, next) { 
    this.eat = parseInt(number); 
    callback(); 
}); 

this.Then(/^I should have (\d+) cucumbers$/, function (number, next) { 
    var left = this.start - this.eat; 
    if (left != number) 
     callback.fail(new Error("This test didn't pass, I started with: " + this.start 
      + ", ate: " + this.eat 
      + " and was left with: " + left 
      + ". Expected: " + number)); 
    callback(); 
    }); 
}; 

module.exports = aTest; 
Cuestiones relacionadas