作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我是 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' ] 来自哪里,但它有点线程安全问题的味道。
任何人都可以向我解释这些意想不到的值是从哪里来的吗?
最佳答案
您传递给 myfunc
的 input
似乎被视为 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/
我是一名优秀的程序员,十分优秀!