Jest покрытие все еще помечает линию после применения теста - PullRequest
0 голосов
/ 08 октября 2018

У меня есть следующая функция в тестируемом компоненте React.

renderLoginLink(caption) {
    return (
      <a href="#" id="lnkAuthenticateWithGoogle" onClick={() => this.props.actions.authenticateWithGoogle()}>
       {caption}
      </a>
    );
  }

Когда я запускаю jest --coverage, эта функция помечается.Я написал следующий тест для той функции, которая проходит.

describe('Login', () => {
    it('calls renderLoginLink()', () => {
        const actions = {
            authenticateWithGoogle: jest.fn()
        }
        const expectedNode = <a href="#" id="lnkAuthenticateWithGoogle" onClick={() => actions}>testCaption</a>

        let node = document.createElement('div');
        let instance = ReactDOM.render(<Login {...initialState} />, node);
        expect(JSON.stringify(instance.renderLoginLink("testCaption"))).toEqual(JSON.stringify(expectedNode));
    });
});

Я не уверен, что мне не хватает или какой другой тест я мог бы написать, чтобы удовлетворить шутку.

Ответы [ 2 ]

0 голосов
/ 08 октября 2018

Попробуйте использовать shallow и simulate из фермента:

function setup() {
  const props = {
    actions: {
      authenticateWithGoogle: jest.fn(),
    },
  };

  return { props };
}

describe('Login', () => {
  const props = setup();
  const component = shallow(<Login {...props} />);

  it('calls renderLoginLink() ', () => {
    const loginLink = component.find('lnkAuthenticateWithGoogle');
    loginLink.simulate('click');
    expect(props.actions.authenticateWithGoogle).toBeCalled();
  });
});
0 голосов
/ 08 октября 2018

Вы говорите, что обработчик onclick должен быть равен этому:

() => actions

, который является функцией, которая возвращает объект и больше ничего не делает.

Вместо этого я бы сделалкомпонента с shallow(), передайте функцию authenticateWithGoogle как шутку и подтвердите, что нажатие на <a> вызывает ложное впечатление.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...