У меня есть сложный класс javascript, который имеет много функций, многие из которых будут генерировать исключения, если они вызываются вне производственной среды.Мне нужно передать ложные экземпляры этого класса конструктору другого класса в моих тестах, однако я не хочу, чтобы какие-либо функции сложных классов действительно вызывались.То, что я хотел бы сделать, это иметь поддельный объект, который имеет все функции и свойства сложного класса, но все функции должны быть просто шпионами жасмина, которые ничего не делают.
По сути, я хочу иметь возможностьdo
var fakeComplexClass = createFakeObject(ComplexClass);
var testInstanceOfSimpleClass = new SimpleClass( fakeComplexClass);
И будьте уверены, что если testInstanceOfSimpleClass
вызовет любую из fakeComplexClass
функций, они будут шпионами и, таким образом, не завершат мои тесты.
Я мог бы сделать что-то вроде
var fakeComplexClass = { function1() {};, function2() {}; ... }
но есть много функций, и у меня есть несколько различных сложных классов, которые мне нужно проверить, поэтому мне нужен простой способ шпионить за каждой отдельной функцией в классе. \
У Jasmine есть createSpyObj, но он требует, чтобы вы передали ему массив функций.Я не хочу поддерживать этот массив в своих тестах, если мне случится добавить или удалить функции из сложного класса, поэтому я хотел бы что-то, что может просто шпионить за каждой существующей функцией.
Спасибозаранее.