Я занимаюсь тестированием с помощью структуры Jasmine, и я хочу следить за используемым мной методом публикации публикации pub. Тем не менее, метод публикации стреляет дважды, и я только хочу, чтобы шпионить за ним второй раз. Я попытался просто скопировать метод publish
к другому методу, а затем следить за оригинальный метод, например, так:Скопируйте объектный метод без «ссылки» на исходный метод
pubsub.publishCopy = pubsub.publish;
spyOn(pubsub, "publish");
// this call has another call to pubsub.publish. it is this
// 2nd pub sub call that I want to spy on
pubsub.publishCopy(args);
// this shows an error because the pubsub.publishCopy is 'pointing to
// pubsub.publish instead of being a new function with the same functionality
expect(pubsub.publish).toHaveBeenCalledWith(differentArgs);
Однако все, что я делаю, это просто ссылки на метод pubsub.publish
, когда я звоню pubsub.publishCopy
, который выдает ошибку в моем тесте. Как скопировать метод публикации в соответствии с моими потребностями?
Его до сих пор дает мне ту же ошибку из-за this.publish до сих пор относится к оригинальному методу pubsub.publish. –
После дальнейшего исследования ваш метод работает, и проблема связана с тем, как я настроил свой тест. Благодаря! –