2015-07-30 2 views
0

Я очень новой для тестирования в целом, а не только Реагировать тестирование, так что я все еще пытаюсь выяснить не только как испытать, но какой тестировать.Тестирование Реагировать компонент - определяющий, где функциональность должна быть проверена

Вот мой login обратного вызова, которая вызывается по представить в виде:

login() { 
    let typedUsername = React.findDOMNode(this.refs.username).value; 
    if (!typedUsername) { 
     return this.setState({ 
      errored: true 
     }); 
    } 
    // we don't actually send the request from here, but set the username on the AuthModel and call the `login` method below 
    AuthModel.set('username', typedUsername); 
    AuthModel.login(); 
}, 

AuthModel является Backbone.js модель. Но для этого вопроса давайте просто скажем, что это внешний модуль, который я импортирую в свой компонент Login.jsx.

Я пишу тест, чтобы увидеть, что если имя пользователя введено, то вызывается AuthModel.login(). Я хочу проверить это в своем тестовом файле test.Login.js, проверить это в своем тестовом файле test.AuthModel.js?

it('calls login when there\'s a username present',() => { 
    React.findDOMNode(LoginElement.refs.username).value = 'foo'; 
    TestUtils.Simulate.submit(form); 
    // not sure which direction to take this test 
}); 

Текущий тест (в test.login.js) для контекста ...

Любые советы ценится, так как, как я уже сказал, это действительно первое испытание я когда-либо делал.

ответ

0

Похоже, вы хотите, чтобы шпион. Это гасит реальное осуществление AuthModel и заменить его на объекте, который вы можете сделать ожидание в отношении:

spyOn(AuthModel, 'login'); 
// trigger login somehow 
expect(AuthModel.login).toHaveBeenCalled(); 

Или, если вы хотите, чтобы проверить аргументы, которые передаются:

expect(AuthModel.login).toHaveBeenCalledWith('username', 's3cretpassw0rd); 
+0

Ace, спасибо вы. Я _believe_ Я закончил с чем-то похожим: https://gist.github.com/benhowdle89/3e1cfd863e5e920b79ae. Моя проблема попала в «AuthModel» из теста, поскольку она была импортирована в компонент 'Login.jsx'. Не могли бы вы сказать, что мой подход выглядит довольно громко, как есть? – benhowdle89

Смежные вопросы