首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我的vows.js副主题用法有什么问题?

我的vows.js副主题用法有什么问题?
EN

Stack Overflow用户
提问于 2013-03-05 22:56:43
回答 1查看 250关注 0票数 0

由于某些原因,我似乎不能让vows.js子主题在我的实际测试套件中工作,但它们在示例文件中工作得很好……你能发现我的问题吗?

这是可行的:

代码语言:javascript
复制
vows.describe('An Education in Vows').addBatch({
    'when I write an asynchronous topic': {
        topic: function() {
            var that = this;
            setTimeout(function() {
                that.callback(true);
            }, 100);
        },
        'it passes': function (topic) {
            assert.equal(topic, true);
        },
        'and it has an asynchronous sub-topic': {
            topic: function() {
                var that = this;
                setTimeout(function() {
                    that.callback(true);
                }, 100);
            },
            'it also passes': function (topic) {
                assert.equal(topic, true);
            }
        }
    }
}).run();

当我通过以下方式运行此命令时:

代码语言:javascript
复制
node tests/learning-vows.js

我得到了:

代码语言:javascript
复制
·
·
✓ OK » 2 honored (0.207s)

这不起作用:

我有一个文件./test/Smoke.js

代码语言:javascript
复制
vows.describe('Registration & Authentication').addBatch({
    'when a user registers with a valid username and password': {
        topic: function () {
            client.register({
                username: validusername,
                password: validpassword
            }, this.callback);
        },
        'we return status 200 OK': function (data, response) {
            assert.equal(200, response.statusCode);
        },
        'simple sub-topic': {
            topic: true,
            'should work': function(topic) {
                assert.equal(true, topic);
            }
        },
    }
}).run()

当我通过以下方式执行此操作时:

代码语言:javascript
复制
node tests/smoke.js

我得到了:

代码语言:javascript
复制
·
✗ Errored » 1 honored ∙ 1 errored

请注意,在第二个示例中,如果没有子主题,我会得到:

代码语言:javascript
复制
·
✓ OK » 1 honored (0.100s)
EN

回答 1

Stack Overflow用户

发布于 2013-07-12 06:58:17

Vows使用节点的约定进行回调(参见:http://nodemanual.org/latest/nodejs_dev_guide/working_with_callbacks.html),它假定回调上的第一个参数是一个错误对象。

因此,当您将data作为第一个参数发送时,您告诉我们在client.register中发生了错误。它阻止了誓言计算子主题。子主题被标记为已出错,但断言成功,当前主题被标记为荣誉。

从输出中猜测这一点确实不是微不足道的。此外,誓言行为不一致,尝试在第一个测试中将true替换为0,然后将'0'替换为回调参数,您将看到另外两个结果。

下面是一个有效的示例:

代码语言:javascript
复制
var vows = require('vows'), assert = require('assert');

var client = {
  register: function(obj,callback){
    callback(null, obj, {statusCode:200});
  }
};
vows.describe('Registration & Authentication').addBatch({
    'when a user registers with a valid username and password': {
        topic: function () {
            client.register({
                username: 'validusername',
                password: 'validpassword'
            }, this.callback);
        },
        'we return status 200 OK': function (err, data, response) {
            assert.equal(response.statusCode, 200);
        },
        'simple sub-topic': {
            topic: true,
            'should work': function(topic) {
                assert.equal(true, topic);
            }
        }
    }
}).export(module)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15226959

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档