我有一个Django应用程序,它使用React创建新闻提要组件。当React Newsfeed组件挂载时,它对djangoapi进行ajax调用以获取当前用户,并将新帖子的作者设置为当前用户。以下是React组件的新表单:
var NewPost = React.createClass({
getInitialState: function() {
return {
author: 'Default Author'
}
},
getUser: function() {
$.ajax({
url: this.props.url + "user/",
dataType: 'json',
method: 'GET',
success: function(data){
this.setState({author: data.fields.first_name});
}.bind(this),
error: function(xhr, status, err) {
console.error("Error with API", status, err.toString());
}.bind(this)
})
},
componentDidMount: function(){
this.getUser();
},
handleSubmit: function(event) {
event.preventDefault();
var author = this.state.author;
var content = React.findDOMNode(this.refs.content).value.trim();
if (!content) {
return;
}
this.props.onPostSubmit({author: author, content: content});
React.findDOMNode(this.refs.content).value = '';
return;
},
render: function() {
return (
<div className="panel panel-default">
<div className="panel-body">
<form onSubmit={this.handleSubmit}>
<div className="form-group">
<textarea className="form-control" ref="content" placeholder="Whats Up" rows="3" id="newpost-input" />
<br/>
<input type="submit" className="btn btn-primary" id='newpost-submit' value="Submit" />
</div>
</form>
</div>
</div>
)
}
});
当我手动测试这段代码时,一切都按它应该的方式工作。我登录,发表一篇文章,我的名字显示为文章的作者。但是,当我使用Selenium测试这一点时,作者是“默认作者”;它不会被更改。在我的Selenium测试中,我用我的登录凭证登录到我的应用程序,一切正常,除了帖子的作者没有从“默认作者”改为我的名字。在
起初,我认为Selenium在ajax调用完成之前就已经完成了它的工作。所以我在Selenium测试中增加了一些等待时间,但是作者的名字从来没有改变过。你知道为什么ajax调用不起作用吗?在
更新 以下是相关的硒代码:
^{pr2}$我知道使用我的凭据登录是成功的,因为我将{{user}}
添加到django模板中,并向selenium测试添加了一个print
语句以打印正文文本,{{user}}
将正确显示为我的用户名。在
我做的另一个测试是看react函数componentDidMount
是否被调用。在componentDidMount
函数中,我执行了以下操作:
componentDidMount: function() {
console.log("component mounting");
this.getUser();
console.log("component mounted");
},
除此之外,我还将console.log
添加到getUser
ajax
调用的success
和{componentDidMount
函数的console.log
起作用,但是ajax
调用中的console.log
s不起作用。在
目前没有回答
相关问题 更多 >
编程相关推荐