【发布时间】:2023-03-28 09:03:01
【问题描述】:
我有一个简单的应用程序,我可以在其中添加对话(Q/A)。我已经为它写了测试-
describe('New Survey:', function() {
it('should be added', function() {
browser.get('http://127.0.0.1:8090/#/newConversation');
//picking a user
element.all(by.css('.form-control')).get(5).click();
element(by.model('vm.user')).sendKeys('test');
element(by.repeater('user in vm.users').row(6)).click();
//push some answers
var inputs = element.all(by.css('.form-control.validated')).each(function(element,index){
element.sendKeys('test answer');
});
//and send it
element(by.id('submit')).click();
element(by.css('.confirm')).click()
browser.waitForAngular();
});
});
点击.confirm按钮后
这个方法被调用
this.saveSurvey = function(conv) {
return $http.post('/conv', conv);
};
但是量角器不会等到它完成,所以实际上没有对话发送到服务器我怎么能让它等到发布完成?
【问题讨论】:
-
当您向服务器发送 post 请求时,您是否从服务器收到任何响应?
-
好像没有,请问是什么原因?
-
它是必须响应的服务器。如果它根本没有发送任何响应,那么您所能做的就是明确等待几秒钟,或者如果有一个元素在发布请求完成时发生变化(如成功通知,或在某处添加的一行文本等) ,你可以等待它发生。
-
在单击
.confirm之前添加browser.pause()会有所帮助,但我不想以这种方式使用它 -
我认为您必须对测试添加一些期望,因为现在它实际上没有任何东西可以断言并立即退出。
标签: javascript angularjs jasmine http-post protractor