0

我正在尝试使用 JEST 为我编写的具有类似于以下静态属性的类编写测试:

class DataManager {
    static #data = null;

    static getData = () => {
        return this.#data;
    }

    static initializeData = async () => {
        await database(async (db) => {
            const data = getSomeDataFromDatabase() //just example
            this.#data = data;
        });
    }
}

现在,我想为我的initializeData方法做一个新的实现,返回一些模拟数据而不是去数据库,然后“getData”看看我是否得到了预期的结果。问题是我的#data 属性是私有的,我不想将它暴露给外界。有什么办法吗?

4

1 回答 1

-1

不,没有办法做到这一点。私有字段确实是私有的。如果您想在测试中模拟它们,请不要使用私有字段。或者反过来:如果它们是私有的(实现细节),你不应该模拟它们。

您需要模拟整个DataManager类及其公共方法,或者如果您想测试它DataManager本身,那么您将模拟它调用的databaseand函数。getSomeDataFromDatabase

于 2021-01-07T13:21:14.940 回答