[英]How use mocha test framework with node.js and sails.js
我想將mocha用於node.js. 我使用的最后一個測試框架是來自Ruby on Rails的Rspec,所以我試圖以相同的方式進行,但是我被巨大的框架和我可以使用的所有庫所困擾。
我正在關注官方的入門,但它沒有解釋如何組織測試。
http://visionmedia.github.io/mocha/#installation
現在,我正在閱讀我可以使用以下庫:
而且我知道還有更多,這只是我在摩卡官方網站上看到的列表。 根據我的理解,看起來chai是與摩卡一起使用的,你怎么看?
而且,到目前為止,我從來沒有看到任何東西來幫助我決定在哪里編寫測試(好吧,在/ test /,當然)以及如何組織一切。
我也使用偉大的sails.js框架(基於express)和pomelo.js用於不同的項目,我需要在兩個框架上使用相同類型的測試,所以我正在尋找一個通用的架構和庫,我可以在兩者上使用(所以,不是特定於sails.js的東西,但可以直接從任何其他框架使用)
這就是我計划組織測試的方式,你認為這是一個正確的架構嗎?
節點的主要問題是有很多框架,插件,庫,我不知道什么是最好的選擇,node.js對於一個大社區真的很大,而且很難對所有可能性進行概述。
你如何處理你的測試?
我發現博客文章單元測試Sails.js應用程序與摩卡有助於設置和組織測試。
但是,因為我使用Sails版本0.10.5,所以我決定稍微清理Grunt配置。 我在tasks/config/
文件夾中添加了一個名為mocha.js
的文件,其中包含以下代碼:
module.exports = function(grunt) {
grunt.config.set('mochaTest', {
test: {
options: {
reporter: 'spec'
},
src: ['tests/**/*.spec.js']
}
});
grunt.loadNpmTasks('grunt-mocha-test');
};
然后我通過在tasks/register
創建一個名為test.js
的文件來注冊該任務。 在這個文件里面,我添加了以下代碼。
module.exports = function (grunt) {
grunt.registerTask('test', [
'mochaTest'
]
);
};
然后,您可以運行grunt test
以查看結果。
在測試文件夾中創建名為test.js的文件
對於測試斷言最佳選項是像柴或應該或期望的,對於測試rest api或發送http請求你可以使用supertest。 首先包括測試文件中的所有庫
"use strict"
var should = require('should');
var assert = require('assert');
var request = require('supertest');
現在,業務邏輯測試包括您需要的文件。 假設我在api / services中有一個名為LoginService的文件,您可以通過以下方式將其包含在內
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':'sample@email.com'};
//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();
});
});
});
希望這可以幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.