玩笑覆盖测试全局对象和逆条件

时间:2019-05-09 09:39:16

标签: unit-testing global-variables jestjs

我在window上有一个具有功能的全局对象。在我的代码中,我正在编写:

if (window.foo) {
      window.foo.bar();
}

在测试中,当window.foo有一个值时,我断言window.foo.bar已被调用。很容易。

开玩笑地抱怨我没有测试负值,即window.foo未定义时。但是我一直在努力确定要断定的内容。

我想做的-是模拟window.foo并断言,当我们检查它是否有值或未定义时,它仅被调用一次(即从未调用window.foo.bar

我试图模拟全局窗口对象并返回一个对象,但是当它不是函数时如何对值进行模拟和spyOn,然后检查是否已访问它,我感到困惑。

任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:1)

您可以使用吸气剂,因此只要在吸气剂内部访问对象的属性,我们就可以执行多个操作,在这种情况下,我们只是手动触发间谍。

{
    "prop1": "field1",
    "prop2": "4",
    "prop3": {
        "userId": "2",
        "customerId": "4",
        "type": {
            "userType": "Manager",
            "contactInfo": [
                {
                    "system": "email",
                    "value": "test@test.com"
                },
                {
                    "system": "phone",
                    "value": "555-555-5555"
                }
            ]
        }
    }
}

您可以看到它在here

中工作