【问题标题】:Test form data using Mocha for NodeJS使用 Mocha for NodeJS 测试表单数据
【发布时间】:2015-04-01 21:13:31
【问题描述】:

我正在尝试为发送表单数据并检查响应是否正常 (200) 的 nodejs 编写 mocha 测试,并且 res.body 具有一些属性,但是 测试失败 并且我不知道原因。增加 timout 没有帮助,当我使用 AdvancedRESTclient chrome 扩展和 Payload 部分中的表单数据时,它完美地工作! .type('form') 应该是超级代理语法

var should = require('should'),
    assert = require('assert'),
    request = require('supertest'),
    superagent = require('superagent');

        describe('Data', function () {

            it('should return status OK (200)', function(done) {
                this.timeout(20000);
                request.post('http://xxx:3000/xxx/xxx')
                    .type('form')
                    .send({startDate:"2015-03-08",endDate:"2015-03-24",timeLapse:"day"})
                    .end(function(err, res) {
                        if (err) {
                            throw err;
                        }
                        assert.ok(res);
                        assert.ok(res.body);
                        assert.equal(res.status, 200);
                        res.body.should.have.property('trial');
                        done();
            });
        });

错误是:

TypeError: undefined is not a function
        at Context.<anonymous> (C:\Users\user\WebstormProjects\StatsTest\test\getMostRecentData.js:112:17)
        at Test.Runnable.run (C:\Users\user\AppData\Roaming\npm\node_modules\mocha\lib\runnable.js:233:15)
        at Runner.runTest (C:\Users\user\AppData\Roaming\npm\node_modules\mocha\lib\runner.js:387:10)
        at C:\Users\user\AppData\Roaming\npm\node_modules\mocha\lib\runner.js:470:12
        at next (C:\Users\user\AppData\Roaming\npm\node_modules\mocha\lib\runner.js:312:14)
        at C:\Users\user\AppData\Roaming\npm\node_modules\mocha\lib\runner.js:322:7
        at next (C:\Users\user\AppData\Roaming\npm\node_modules\mocha\lib\runner.js:257:23)
        at Immediate._onImmediate (C:\Users\user\AppData\Roaming\npm\node_modules\mocha\lib\runner.js:289:5)
        at processImmediate [as _immediateCallback] (timers.js:358:17)

【问题讨论】:

    标签: node.js testing mocha.js superagent


    【解决方案1】:

    试试这个:

    var should = require('should'),
        assert = require('assert'),
        request = require('supertest')('http://xxx:3000'),
        superagent = require('superagent');
    
            describe('Data', function () {
    
                it('should return status OK (200)', function(done) {
    
                    request.post('/xxx/xxx')
                        .type('form')
                        .send({startDate:"2015-03-08",endDate:"2015-03-24",timeLapse:"day"})
                        .end(function(err, res) {
                            if (err) {
                                throw err;
                            }
                            assert.ok(res);
                            assert.ok(res.body);
                            assert.equal(res.status, 200);
                            res.body.should.have.property('trial');
                            done();
                });
            });
    

    【讨论】:

    • 成功了!谢谢!为什么request = require('supertest')('http://xxx:3000'), 行必须包含('http://xxx:3000')
    • 不客气,您可以阅读supertest的文档了解更多信息。
    猜你喜欢
    • 2013-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-04
    • 2016-09-20
    • 1970-01-01
    相关资源
    最近更新 更多