我有一个函数,当我独立测试它时,它的行为是正确的。然而,在运行我的整个应用程序时,好像array.push()不再起作用了。
module.exports.getLocalTypes = async (server_id, user_id) => {
let localTypes = [];
const getServer = await this.getRobotServer(server_id);
const { settings } = getServer;
console.log("GET ROBOT SERVER STATUS: ", settings);
settings.roles.map(role => {
console.log("TEST 1 ", role.role);
role.members.forEach(member => {
console.log("TEST 2", member);
if (user_id === member) return localTypes.push(role.role);
});
});
console.log("BEOFRE NO DUPES: ", localTypes);
localTypes = Array.from(new Set(localTypes));
console.log("SENDING LOCAL TYPES: ", localTypes);
return localTypes;
};当我运行一个独立的测试时,我得到了正确的结果:
TEST 1 default
TEST 2 @everyone
TEST 1 owner
TEST 2 user-810c7f96-47ad-4408-a8a2-3c9274fa2898
BEOFRE NO DUPES: [ 'owner' ]
SENDING LOCAL TYPES: [ 'owner' ]
Should return ['owner']: [ 'owner' ]当运行我的完整应用程序并对函数使用完全相同的输入时,我会得到以下结果:
[1] TEST 1 default
[1] TEST 2 @everyone
[1] TEST 1 owner
[1] TEST 2 user-810c7f96-47ad-4408-a8a2-3c9274fa2898
[1] BEOFRE NO DUPES: []
[1] SENDING LOCAL TYPES: []该函数从数据库中正确地提取了值,并提取了正确的所有者和角色,但是在将该值添加到数组时似乎失败了。我尝试过将整个过程包装在一个promise中,或者使用try / catch。没有关系。
输出应该是一个添加了类型的数组,就像第一个测试结果一样。
我仍然是JS的新手,所以可能我遗漏了一些基本的东西。对于完整的上下文,整个repo都是在线的:https://github.com/jillytot/remote-control
哦,最后要注意的是,在应用程序运行的同时运行我的测试。测试仍然会产生正确的结果,但实际的应用程序仍然会得到错误的结果。
发布于 2019-06-12 01:33:59
我刚刚解决了这个问题,这和这里的任何事情都没有关系。在某些情况下,我一定是不小心更改了输入别名之一,所以用户进入时是未定义的。我错过了它,因为我之前确认它是有效的,所以我在测试中忽略了它。
https://stackoverflow.com/questions/56548556
复制相似问题