我在window
上有一个具有功能的全局对象。在我的代码中,我正在编写:
if (window.foo) {
window.foo.bar();
}
在测试中,当window.foo
有一个值时,我断言window.foo.bar
已被调用。很容易。
开玩笑地抱怨我没有测试负值,即window.foo
未定义时。但是我一直在努力确定要断定的内容。
我想做的-是模拟window.foo
并断言,当我们检查它是否有值或未定义时,它仅被调用一次(即从未调用window.foo.bar
)
我试图模拟全局窗口对象并返回一个对象,但是当它不是函数时如何对值进行模拟和spyOn,然后检查是否已访问它,我感到困惑。
任何帮助表示赞赏!
答案 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
中工作