внутренний тестовый модуль с энзимом и синоном - PullRequest
3 голосов
/ 10 апреля 2019

Я пытаюсь написать тест для функции с внутренним вызовом в энзиме и Sinon, но у меня возникают некоторые проблемы с внутренним вызовом.

Вот мой код:

Chat.js

sendMssage = text => {
    const { user } = this.props;
    let message = this.messageModel.normalize(text);

    this.socketClient.onSendMessage(message, user);
    this.addMessage(message);
  };

test.js

  it('should call sendMessage function', () => {
    const wrapper = shallow(<Chat />);
    const instance = wrapper.instance();
    sinon.spy(instance.socketClient(
    message,
    user,
  ));
    socketClicent.onSendMessage(message, user);
    Instance.sendMessage(message);
  });

Выдает ошибку:

instance.socketClient не является функцией

Кто-нибудь может мне помочь понять, что я делаю не так?

1 Ответ

1 голос
/ 10 апреля 2019

Я вижу, вы делаете следующее:

sinon.spy(instance.socketClient(
  message,
  user,
));

Я предполагаю, что socketClient - это экземпляр объекта, а не функция, но я не могу быть уверен, не увидев код этой части.

Если вы думаете, что намереваетесь шпионить за методом onSendMessage из socketClient. sinon.spy ожидает от вас либо прохождения функции, либо объекта + функции (если вы пытаетесь шпионить за методом экземпляра). Попробуйте следующее:

sinon.spy(instance.socketClient, 'onSendMessage');

Полное решение:

it('should call sendMessage function', () => {
  const wrapper = shallow(<Chat user={user} />);
  const instance = wrapper.instance();
  const socketClient = new socketEvent();
  const spy = sinon.spy(socketClient, 'onSendMessage');
  instance.socketClient = socketClient;
  instance.sendMessage(message);
  sinon.assert.calledWith(spy, message, user);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...