Node.js 使用jasmine测试Express.js
我正在学习Node.js和Express框架。我是茉莉花的忠实粉丝。所以我想在任何可能的时候使用jasmine,但是,我找不到一个用jasmine测试Express的好方法。例如,我应该如何在app.js中测试路由 如果我在app.js中有此路线:Node.js 使用jasmine测试Express.js,node.js,express,jasmine,Node.js,Express,Jasmine,我正在学习Node.js和Express框架。我是茉莉花的忠实粉丝。所以我想在任何可能的时候使用jasmine,但是,我找不到一个用jasmine测试Express的好方法。例如,我应该如何在app.js中测试路由 如果我在app.js中有此路线: app.get('/', function(req, res) { ... }); 如何使用jasmine来测试它?使jasmine与node.js一起使用变得很容易。他们的网站上有一些例子。另一个例子可以在中找到,也许你可以试试 下面是一个简
app.get('/', function(req, res) {
...
});
如何使用jasmine来测试它?使jasmine与node.js一起使用变得很容易。他们的网站上有一些例子。另一个例子可以在中找到,也许你可以试试
下面是一个简单的例子:
var request = require('supertest')
, express = require('express');
var app = express();
app.get('/user', function(req, res){
res.send(200, { name: 'toto' });
});
describe('GET /user', function(){
it('should respond with json', function(done){
request(app)
.get('/user')
.set('Accept', 'application/json')
.expect('Content-Type', 'json')
.expect(200, done);
})
})
你应该试试看
我还没有机会使用它,但在我寻找同一问题的解决方案时,这是我能找到的最好的解决方案。您可以将supertest与jasmine一起使用,但只需手动传递错误即可。GitHub项目上的一个问题在不久前就已经公开了
您可以尝试使用Jasmine承诺的supertest。这对我很有用: 以下是一些例子:
自从Jasmine 2以来,在Node.js环境中使用Jasmine非常简单。要使用它测试应用程序,我建议将Jasmine与 下面是这样一个测试的样子: project/spec/ServerSpec.json
const request = require('supertest');
const app = require('../app');
describe('Server', () => {
describe('REST API v1', () => {
it('returns a JSON payload', (done) => {
request(app)
.get('/rest/service/v1/categories')
.expect(200)
.expect('Content-Type', 'application/json; charset=utf-8')
.end((error) => (error) ? done.fail(error) : done());
});
});
});
{
"helpers": [
"helpers/**/*.js"
],
"random": false,
"spec_dir": "spec",
"spec_files": [
"**/*[sS]pec.js"
],
"stopSpecOnExpectationFailure": false
}
一些先决条件:
npmi-Djasmine@2
npm i-Dsupertest@3
Jasmine init
创建一个初始Jasmine配置(注意:如果您还没有执行此命令,则需要首先全局安装Jasmine)ServerSpec.js
)const request = require('supertest');
const app = require('../app');
describe('Server', () => {
describe('REST API v1', () => {
it('returns a JSON payload', (done) => {
request(app)
.get('/rest/service/v1/categories')
.expect(200)
.expect('Content-Type', 'application/json; charset=utf-8')
.end((error) => (error) ? done.fail(error) : done());
});
});
});
{
"helpers": [
"helpers/**/*.js"
],
"random": false,
"spec_dir": "spec",
"spec_files": [
"**/*[sS]pec.js"
],
"stopSpecOnExpectationFailure": false
}
要运行您的规范(测试套件),只需将其添加到您的测试中并执行npm测试
(或者只执行npm t
):
我认为supertest也可以很容易地与茉莉花一起使用,所以你的建议会很有帮助,而且没有必要将它与摩卡咖啡联系起来。他说他喜欢茉莉花。他向茉莉寻求解决办法。这个答案给了他一个摩卡咖啡的解决方案。Mocha不是Jasmine。在我们用frisbyjs测试我们的expressjs api部署时,我们非常满意:)你的链接不需要信息。添加了到存档版本的链接。