我想一个接一个地测试多个方法,一个方法输出必须传递给下一个方法。
例如:我有两种测试方法,称为添加和删除。 add方法的onsuccess将返回添加的对象(带有id)。我希望传递给删除方法的同一个对象,以便删除创建的对象。
exports.add = function(test) {
nodemanager.add({
name : 'my name'
}, function(node) {
//this is onsuccess callback.
test.ok(node && node.id, 'Failed to get added node\'s info');
test.done();
});
}
exports.del = function(test) {
//Here i need to pass node object returned from onsuccess on add method.
nodemanager.del(node, function(node) {
test.ok(node, 'Deleted node is null');
test.done()
});
}
一种方法是,在这两个函数之外定义节点对象,并从这两个方法中进行访问。
我只是想知道这是否是正确的方法,还是有更好的方法。
答案 0 :(得分:0)
通常的做法是将测试彼此隔离。有些测试套件以随机顺序运行测试,以确保用户不依赖任何订单。
因此,如果您的第二个测试检查可以删除添加的节点,则应确保此元素可用。可能是这样的:
exports.add = function(test) {
nodemanager.add({
name : 'my name'
}, function(node) {
test.ok(node && node.id, 'Failed to get added node\'s info');
test.done();
});
}
exports.del = function(test) {
nodemanager.add({
name : 'my name'
}, function(addedNode) {
nodemanager.del(addedNode, function(deletedNode) {
test.ok(deletedNode, 'Deleted node is null');
test.done()
});
});
}
当然这个解决方案还有另一个问题:如果nodemanager.add破坏你的del测试也会失败。但是,我觉得这里可以接受,如果这里很难模仿添加行为。
答案 1 :(得分:0)
如果您当前正在使用此nodeunit,https://github.com/caolan/nodeunit,我认为您肯定会查看作者的其他项目Async(https://github.com/caolan/async)。我认为瀑布功能是你正在寻找的。我正在寻找一个类似的答案,这导致我进入这个页面所以我即将试一试,并会告诉你它是怎么回事。