gpt4 book ai didi

javascript - 如何在 nodejs 中通过异步调用重用测试函数?

转载 作者:搜寻专家 更新时间:2023-11-01 00:43:11 24 4
gpt4 key购买 nike

我是 node.js 的新手,我已经有一段时间没有使用异步框架了。在诸如 python 之类的过程语言中,很容易获得输入和预期输出的列表,然后循环遍历它们进行测试:

tests = {
1: [2, 3],
2: [3, 4],
7: [8, 9],
}

for input, expected_out in tests.items():
out = myfunc(input)
assert(out == expected_out)

我正在尝试用 nodejs/mocha/should 做一些类似的事情:

var should = require('should');

function myfunc(x, cb) { var y = x + 1; var z = x + 2; cb([y, z]); };

describe('.mymethod()', function() {
this.timeout(10000);
it('should return the correct output given input', function(done) {
var testCases = {
1: [2, 3],
2: [3, 4],
7: [8, 9],
};

for (input in testCases) {
myfunc(input, function (out) {
var ev = testCases[input];
out.should.equal(ev);
});
}
})
})

这导致:

  AssertionError: expected [ '11', '12' ] to be [ 2, 3 ]
+ expected - actual

[
+ 2
+ 3
- "11"
- "12"
]

我不知道 [ '11', '12' ] 来自哪里,但它有点线程安全问题的味道。

任何人都可以向我解释这些意想不到的值是从哪里来的吗?

最佳答案

您传递给 myfuncinput 似乎被视为 String。看看这个答案。

Keys in Javascript objects can only be strings?

试试这个,

var should = require('should');

function myfunc(x, cb) { var y = x + 1; var z = x + 2; cb([y, z]); };

describe('.mymethod()', function() {
this.timeout(10000);
it('should return the correct output given input', function(done) {
var testCases = {
1: [2, 3],
2: [3, 4],
7: [8, 9],
};

for (input in testCases) {
input = parseInt(input)
myfunc(input, function (out) {
var ev = testCases[input];
out.should.equal(ev);
});
}
})
})

在这里,我已将 input 解析为其整数值。

关于javascript - 如何在 nodejs 中通过异步调用重用测试函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27652868/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com