我使用QUnit在一个相当复杂的JavaScript应用程序中对一些序列化和反序列化逻辑进行单元测试,但是我无法通过测试。
看起来好像应该做正确的事情的两张支票是deepEqual或propEqual,但是,它们似乎都没有完全符合我的要求:
如果我使用deepEqual
并且两个对象不匹配,则断言失败并且它向我显示指示问题的差异。但是,如果没有区别,我只会得到一条失败消息,显示传递给等式检查的第一个参数为没有第二个参数的“预期”值或任何差异的指示。我想这可能是因为它们不是同一个对象,但我不确定。
如果我使用propEqual
,我只会收到一条消息RangeError: Maximum call stack size exceeded at String.match (native)
并且测试失败。
是否可以使用QUnit执行此类检查?如果是这样,我做错了什么?
答案 0 :(得分:0)
对于遇到propEqual
我在上面描述的第二个问题的任何人,导致我麻烦的问题是循环引用,其中一个子对象持有对它的父级的引用,然后将其发送到QUnit旋转。可以调整objectValues
功能,以便将对象标记为"看到"当它已经处理它们并且只处理看不见的对象时。有了这个,比较对我有用。