我有一个可以在独立测试时正常运行的功能。但是,当运行我的完整应用程序时,好像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还是很陌生,所以也许我缺少一些基本知识。 对于全文,整个仓库都在线: https://github.com/jillytot/remote-control
哦,最后一点要注意,在应用程序也运行的同时运行我的测试。测试仍然会产生正确的结果,但是实际的应用程序仍然会得到错误的结果。
答案 0 :(得分:0)
我刚刚解决了它,它与这里没有任何关系。 在某些时候,我一定不小心更改了输入别名之一,因此用户以未定义的身份进入。 我错过了它,因为这是我早先确认过的工作,因此我在测试中忽略了它。