Proyecto Liqueed (5)

Published on Author lopez

Anterior Post

Examinemos dos tests de test/personapi.js. El segundo test es:

exports['get persons'] = function (test) {
    test.async();
    
    var request = {};
    var response = {
        send: function (model) {
            test.ok(model);
            test.ok(Array.isArray(model));
            test.ok(model.length);
            test.ok(model[0].id);
            test.ok(model[0].name);
            test.done();
        }
    };
    
    controller.list(request, response);
};

Una vez ya armado el modelo de dominio (en el primer test), ahora podemos probar un método del controlador, el getPersons. Como necesita recibir request y response, le pasamos dos objetos armados a propósito, y que tienen lo que el controlador necesita. El response tiene definido un método send, que se espera sea invocado por la acción del controlador. Ahí es donde reside el test de lo retornado, y el test.done() que hace que el test termine exitosamente. Se espera que devuelva un modelo, un objeto JSON que sea un arreglo, que contenga algunos datos.

El tercer test es:

exports['get first person'] = function (test) {
    test.async();
    
    var request = {
        params: {
            id: persons[0].id.toString()
        }
    };

    var response = {
        send: function (model) {
            test.ok(model);
            test.equal(model.id, persons[0].id);
            test.equal(model.name, persons[0].name);
            test.done();
        }
    };
    
    controller.get(request, response);
};

Esta vez se necesita algo en el objeto request, un parámetro adicional indicando la clave primaria de la persona. Sigue habiendo un método send en el response armado para el test, que controla que se devuelvan los datos de la persona pedida.

Vemos que acá no se está invocando HTTP con GET o cosas similares. Estamos probando directamente el código del controlador. De hecho, el código fue escrito luego del tests, y se ejecutó por primera vez desde los tests, sin necesidad de levantar un servidor HTTP.

Próximo post: veremos la prueba de otros métodos de la API, pasándoles objetos, y pruebas del controlador MVC

Nos leemos!

Angel “Java” Lopez
http://www.ajlopez.com
http://twitter.com/ajlopez