[英]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.