【发布时间】:2012-02-18 03:16:36
【问题描述】:
我有一个复杂的 javascript 类,它有很多函数,如果在生产环境之外调用它们中的许多会抛出异常。我需要在我的测试中将此类的模拟实例传递给另一个类的构造函数,但是我不希望实际调用任何复杂的类函数。我想做的是有一个假对象,它具有复杂类的所有功能和属性,但所有功能都只是什么都不做的茉莉间谍。
基本上我希望能够做到
var fakeComplexClass = createFakeObject(ComplexClass);
var testInstanceOfSimpleClass = new SimpleClass( fakeComplexClass);
并确保如果testInstanceOfSimpleClass 调用任何fakeComplexClass 函数,它们将是间谍,因此不会使我的测试崩溃。
我可以做类似的事情
var fakeComplexClass = { function1() {};, function2() {}; ... }
但是有很多函数,我需要测试几个不同的复杂类,所以我需要一个简单的方法来基本上监视类中的每个函数。\
Jasmine 确实有 createSpyObj,但它要求您向其传递一组函数。如果我碰巧在复杂类中添加或删除函数,我不想在测试中维护该数组,所以我想要一些可以监视那里的每个函数的东西。
提前致谢。
【问题讨论】:
标签: javascript unit-testing jasmine