我对一般的测试非常陌生,不仅仅是React测试,所以我仍然试图找出如何进行测试,但是什么测试。
以下是我提交表单时调用的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
中)for context ...
任何建议都值得赞赏,就像我说的那样,这真的是我做过的第一次测试。
答案 0 :(得分:0)
听起来你想要一个间谍。这将剔除AuthModel的真实实现,并将其替换为您可以预期的对象:
spyOn(AuthModel, 'login');
// trigger login somehow
expect(AuthModel.login).toHaveBeenCalled();
或者如果您还想测试传递的参数:
expect(AuthModel.login).toHaveBeenCalledWith('username', 's3cretpassw0rd);