Yahoo использует метод, называемый идентификатором отправителя, который может быть настроен в Мастере установки SPF и введен в ваш DNS. Также один из важных для Exchange, Hotmail, AOL, Yahoo и других - иметь обратный DNS для вашего домена. Те будут выбивать большинство проблем. Однако вы никогда не можете помешать человеку умышленно блокировать ваши или пользовательские правила.
Исходное сообщение об ошибке, которое вы получили, совершенно правильное - если посмотреть на , документы Sinon , .calledOnce
- это не функция, это javascript get
, который выполняет код. В общем, ожидания Чая кажутся функциями, только если им нужны параметры.
Я нахожу это немного раздражающим, потому что get
перегрузка не очень хороша и ломает нашу способность рассуждать о коде, и это вызывает кучу ошибок, но эй хо.
Изменение ожидаемого значения на
expect(floopStub).to.have.been.calledOnce;
исправляет тест (по крайней мере, на моей машине!)
Причина, по которой код кажется «работающим» во втором примере, заключается в том, что тест разрешает операцию calledOnce
get, которая проверяет условие и генерирует утверждение о неудачном тестировании, поэтому никогда не возникает вероятность выбросить исходную ошибку, пытаясь вызвать результат get
, как если бы он был функцией.
Между прочим, легче инициировать событие щелчка с помощью встроенного вызова фермента .simulate()
. Этот код работает нормально:
const floopStub = sinon.stub();
const wrapper = shallow(<CardWarsComponent floopThePig={floopMock}></CardWarsComponent>);
wrapper.find('#FloopButtonId').dive().simulate('click');
expect(floopStub).to.have.been.calledOnce;
Более подробную информацию о тестировании событий React с помощью синона / энзима можно найти здесь: https://www.leighhalliday.com/testing-react-jest-enzyme- Sinon