2015-02-18 3 views
0

У меня есть компонент, который по нажатию кнопки вызывает действие магнитного потока:Как проверить действие ReactJS Flux Action (в Jest) из теста компонента?

onSend(event) { 
    MessageActions.sendMessage(this.state.currentMessage); 
}; 

Теперь я хочу тест, чтобы в основном быть в состоянии имитировать нажатие кнопки (я знаю, как сделать это).

И на кнопке щелкните, чтобы проверить, вызвана ли эта функция MessageActions.sendMessage с заданной строкой.

Как получить доступ к MessageActions из моего теста?

Объект, который я тестирую, называется ChatMessage, но MessageActions определяется вне кода React.CreateClass.

Я пытался вещи в моем тесте, как:

var messageActions = require('myactions'); 
expect(messageActions.sendMessage).toBeCalled(); 

и

expect(ChatMessage.MessageActions.sendMessage).toBeCalled(); 

Но ничего не работает, как это просто говорит MessageActions неопределен.

Документы ReactJS имеют (дерьмовый) пример тестирования магазина, но ничего о том, как вы проверяете Действия, используемые в вашем компоненте.

Любая помощь, пожалуйста,

ответ

1

Это должно работать:

expect(MessageActions.sendMessage).toBeCalled();

Просто убедитесь, что объявить MessageActions

var MessageActions = require('path/to/MessageActions');

Я подозреваю, что вы получаете неопределенную ошибку, потому что вы Забыл вышеупомянутое заявление в функции «описать».

+0

Привет, я уже пробовал то, что вы предлагаете. Если вы посмотрите на код в репозитории github, возможно, вы увидите, что я делаю что-то неправильно ... Class = https://raw.githubusercontent.com/thestonefox/react-chat/development/scripts/components/chat_message .js и тест для него = https://raw.githubusercontent.com/thestonefox/react-chat/development/__tests__/scripts/components/chat_message-test.js – TheStoneFox

+0

Ничего, я понимаю, что вы имеете в виду сейчас, даже React = require() должно быть в beforeEach, иначе это не сработает! Узнать что-то новое! :) – TheStoneFox