我有一个复杂的JavaScript类,其中包含许多函数。如果在非生产环境下调用这些函数,则会抛出异常。在我的测试中,我需要将该类的模拟实例传递给另一个类的构造函数,但我不希望实际调用该类的任何复杂函数。我想要的是一个伪造对象,它具有复杂类的所有函数和属性,但对于所有函数只是jasmine间谍,什么也不做。
基本上,我想能够执行以下操作:
但是我有很多功能,而且我需要测试几个不同的复杂类,所以我需要一种简单的方法来监视类中的每个函数。
Jasmine确实有createSpyObj,但它要求您传递一个函数数组。如果我从复杂类中添加或删除函数,我不想在我的测试中维护该数组,因此我希望能够仅对所有存在的函数进行监视。
提前感谢您的帮助。
基本上,我想能够执行以下操作:
var fakeComplexClass = createFakeObject(ComplexClass);
var testInstanceOfSimpleClass = new SimpleClass( fakeComplexClass);
请确保如果testInstanceOfSimpleClass
调用任何fakeComplexClass
函数,它们将成为间谍,因此不会使我的测试崩溃。
我可以这样做:
var fakeComplexClass = { function1() {};, function2() {}; ... }
但是我有很多功能,而且我需要测试几个不同的复杂类,所以我需要一种简单的方法来监视类中的每个函数。
Jasmine确实有createSpyObj,但它要求您传递一个函数数组。如果我从复杂类中添加或删除函数,我不想在我的测试中维护该数组,因此我希望能够仅对所有存在的函数进行监视。
提前感谢您的帮助。