Javascript 在多次使用同一模拟对象/数组时,如何在没有引用的情况下为测试导入模拟数据

Javascript 在多次使用同一模拟对象/数组时,如何在没有引用的情况下为测试导入模拟数据,javascript,angular,unit-testing,reference,Javascript,Angular,Unit Testing,Reference,我正试着做一些角度测试。为此,我将复杂对象(对象中的对象)与其他模拟数据存储在单独的文件中 每个模拟对象都与模拟数据文件中的导出关联 在测试文件中,我导入了测试所需的对象。除了,有时我不得不在几个测试中使用相同的模拟数据。多个测试函数使用相同的数据并修改其输入数据 所以我的问题是,我“加载”我的模拟数据,我在测试中使用它们,测试会更改数据,对于其他需要模拟数据的测试,数据没有处于正确的“状态” 在我的例子中,使用库深度克隆模拟数据是不可行的 我知道创建递归方法(或使用json parse+str

我正试着做一些角度测试。为此,我将复杂对象(对象中的对象)与其他模拟数据存储在单独的文件中

每个模拟对象都与模拟数据文件中的导出关联

在测试文件中,我导入了测试所需的对象。除了,有时我不得不在几个测试中使用相同的模拟数据。多个测试函数使用相同的数据并修改其输入数据

所以我的问题是,我“加载”我的模拟数据,我在测试中使用它们,测试会更改数据,对于其他需要模拟数据的测试,数据没有处于正确的“状态”

在我的例子中,使用库深度克隆模拟数据是不可行的


我知道创建递归方法(或使用json parse+stringify)可以解决我的问题,但我想知道是否还有其他可用选项。就像从文件中重新导入数据一样,也许?

最后,我使用了一个递归函数来克隆复杂对象/数组的任意组合

    public clone(obj: any): any {
        if (null == obj || 'object' !== typeof obj) return obj;
        const copy = obj.constructor();
        if (Array.isArray(obj)) { // property value is an array
            for( const val of obj) {
                if('object' === typeof val) {
                    copy.push(this.clone(val));
                } else {
                    copy.push(val);
                }
            }
        } else {
            for (const attr of Object.keys(obj)) {
                if('object' === typeof obj[attr]) { // property value is an object
                    copy[attr] = this.clone(obj[attr]);
                } else {
                    copy[attr] = obj[attr];
                }
            }
        }
        return copy;
    }
我还认为动态导入可以帮助解决这个问题,每次需要新的mockedData时都导入它