【发布时间】:2021-07-06 17:45:25
【问题描述】:
考虑以下函数:
let dictionary = {
there: "there"
}
function sayHi(word){
if (dictionary.hasOwnProperty(word)){
return "hello " + dictionary[word]
}
}
如果我想测试 sayHi 函数,我将如何在 Jest 测试中模拟 dictionary 变量?
我尝试从模块中导入所有内容并覆盖字典对象,但没有奏效,同样我尝试将其模拟为函数,但仍然无法使其工作。
【问题讨论】:
-
简而言之,你不会。如果您认为字典是 sayHi 的合作者,而不仅仅是实现细节,请将其移出模块。
-
嗨@jonrsharpe,感谢您的评论。我会看看我是否可以以不同的方式组织代码。
-
在这种情况下,它似乎是静态数据,所以我将其视为实现细节。
-
嗨@jonrsharpe,很抱歉我不知道,但我将如何在测试中做到这一点?
-
您不必做任何特别的事情,这就是重点。你测试例如
expect(sayHi("there")).toEqual("there")并且不要过多考虑是否有对象映射或开关或一堆 ifs 或只是const sayHi = () => "there"。
标签: javascript testing jestjs mocking