Как использовать тестовую среду mocha с node.js и sails.js
Я хочу использовать mocha для node.js. Последняя тестовая среда, которую я использовал, была Rspec из Ruby on Rails, поэтому я пытаюсь сделать это таким же образом, но я получаю cnfused структурой огромной и всеми библиотеками, которые я мог бы использовать.
Я слежу за официальным началом, но не объясняет, как организовать тесты.
http://visionmedia.github.io/mocha/#installation
Теперь я читаю, что могу использовать следующие библиотеки:
И я знаю, что это больше, это список, который я видел на официальном сайте мокко.
Для того, что я могу понять, похоже, что chai - это тот, который используется с моккой, что вы думаете об этом?
И до сих пор я никогда не видел ничего, чтобы помочь мне решить, где писать тесты (хорошо, в /test/, конечно) и как организовать все.
Я также использую отличную инфраструктуру sails.js(на основе express) и pomelo.js для разных проектов, мне нужно использовать те же самые тесты для обеих фреймворков, поэтому я ищу общую архитектуру и библиотеки, которые я могу использовать на обоих (так, что-то не специфичное для sails.js, но используемое непосредственно из любой другой структуры)
Вот как я планирую организовать свои тесты, считаете ли вы, что правильная архитектура?
![enter image description here]()
Основная проблема с node заключается в том, что существует множество фреймворков, плагинов, библиотек, и я не знаю, какой лучший выбор, node.js действительно огромный с большим сообществом, и действительно сложно обзор всех возможностей.
Как вы справляетесь со своими тестами?
Ответы
Ответ 1
Я нашел сообщение в блоге Unit Testing Sails.js Applications with Mocha полезен в отношении настройки и организации тестов.
Однако, поскольку я использую Sails версии 0.10.5, я решил немного очистить конфигурацию Grunt. Я добавил файл с именем mocha.js
в папку tasks/config/
со следующим кодом:
module.exports = function(grunt) {
grunt.config.set('mochaTest', {
test: {
options: {
reporter: 'spec'
},
src: ['tests/**/*.spec.js']
}
});
grunt.loadNpmTasks('grunt-mocha-test');
};
Затем я зарегистрировал задачу, создав файл с именем test.js
внутри tasks/register
. Внутри этого файла я добавил следующий код.
module.exports = function (grunt) {
grunt.registerTask('test', [
'mochaTest'
]
);
};
Затем вы можете запустить grunt test
, чтобы увидеть результаты.
Ответ 2
Создайте файл с именем test.js внутри тестовой папки
для тестирования утверждения лучший вариант - это что-то вроде chai или должен или ожидать, для тестирования rest api или отправки HTTP-запроса вы можете использовать supertest. Сначала включите всю библиотеку внутри тестового файла
"use strict"
var should = require('should');
var assert = require('assert');
var request = require('supertest');
Теперь для тестирования бизнес-логики нужно указать нужный файл. Скажем, у меня есть файл с именем LoginService внутри api/services, который вы можете включить в него, следуя
var loginService = require('../api/services/LoginService');
Теперь вы можете начать тестирование своего тестового блока, будет выглядеть как-то похожее
describe('Sample Test', function(){
var url = "http://localhost:1337/";
before(function(done){
//Anything that needed to be done before executing;
done();
});
it("Should test rest api", function(done){
var email = {'email':'[email protected]'};
//Calling rest api with email as a part of req body
request(url)
.post('api/v1/email/isvalid')
.send(email)
// end handles the response
.end(function(err, res) {
if (err) {
throw err;
}
// Check response
res.should.have.status(200) ;
done();
});
});
it("Should test business logic", function(done){
loginService.someFunction(someParameter, function callback(data){
//do your logic test here
done();
});
});
});
Надеюсь, это поможет.