首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我怎样才能waitFor一个元素与Geb一起生子?

我怎样才能waitFor一个元素与Geb一起生子?
EN

Stack Overflow用户
提问于 2014-12-04 15:57:04
回答 1查看 747关注 0票数 0

我正在执行一个测试,该测试运行“单击添加”功能的功能使用。给用户一个条目表,允许用户单击“添加”按钮将项目添加到他们的购物车中。

该按钮执行ajax调用,将项目附加到用户的购物车中。当成功添加项时,该项将显示在Cart UI中。Cart UI本质上是另一个表。

代码语言:javascript
复制
//pseudo code
$('.addButton').on('click', function (event) {
    $.ajax({
        url:...,
        success: updateCart
    });
});
function updateCart (data) {
    // use data to create tr_fragment
    $("#cart-ui-target").append(tr_fragment); //new row
}

我尝试的是在then语句中使用waitFor,直到#cart-ui-target<tr>大小大于或等于1:

代码语言:javascript
复制
waitFor(5) {$('#cart-ui-target').find('tr').size() >= 1}

但是,除了以下例外,每次测试都会失败:

代码语言:javascript
复制
geb.waiting.WaitTimeoutException: condition did not pass in 5.0 seconds (failed with exception)

我甚至尝试在2秒间隔内将waitFor时间增加到10秒,但仍然无法工作:

代码语言:javascript
复制
waitFor(10, 2) {$('#cart-ui-target').find('tr').size() >= 1}

我怎样才能更好地等待和防止零星的失败呢?

更新--这是我在幻影的日志信息中看到的。

代码语言:javascript
复制
$('#cart-ui-target').find('tr').size()
|                  |          |
|                  []         0
[[[[[PhantomJSDriver: phantomjs on LINUX (113358b0-7bf1-11e4-a10e-9f2b2537fa31)] -> tag name: html]] -> css selector: #cart-ui-target]]
EN

回答 1

Stack Overflow用户

发布于 2014-12-04 16:26:36

我认为您试图测试的是JavaScript行为,而不是购物车本身的添加(可能是在后端逻辑中测试的?)。

我认为要走的路是模拟$.ajax,并使用夹具数据从模拟中调用回调。如果您使用茉莉花,这可以看上去如下:

代码语言:javascript
复制
it('should add something when something is succesfully addes', function() {
  data = 'data_for_callback_here';
  spyOn($, 'ajax').andCallFake(function(data) { data.success(data); } );
  $('.addButton').click();
  expect() // Expect something
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27298350

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档