2016-12-12 2 views
2
 browser.sleep(4000); 
     var discount_type = element(by.id("discount_type")); 
     var discount_value= element(by.id("discount_value")); 
     var grandTotal = element(by.id("grand-total")); 
     var subtotal  = element(by.id("subtotal")); 
     var delivery_fee = element(by.id("delivery_fee")); 

     var last = protractor.promise.defer(); 

     console.log("hallo"); 
     subtotal.getText().then(function(sub) { 
      console.log("#############"); 
      console.log(sub); 
      delivery_fee.getText().then(function(fee) { 
      console.log(fee); 
      var calc = parseFloat(sub) - parseFloat(fee) - parseFloat(config.promocodes.referral.discount); 
      console.log(calc); 
      last.fulfill(calc); 
      }); 
     }); 
     last.then(function(calc) { 
      console.log("final wait"); 
      expect(grandTotal.getText()).toBe("$" + calc); 
     }); 

Мне нужно рассчитать значение, прежде чем я могу быть уверен, что мой тест прошел нормально.транспортир: тест всегда разыгрывается, не отображается обещание

В моих тестах я всегда вижу «hallo» в консоли. Тогда я получаю

> hallo 
A Jasmine spec timed out. Resetting the WebDriver Control Flow. 
> F 
> 
> Failures: 1) Refer a user and apply referral code should assign 
> referral discount to user Message: 
>  Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL. Stack: 
>  Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL. 
>   at Timer.listOnTimeout (timers.js:92:15) 

Кажется код никогда не входит в subtotal.getText() обещание! Почему это???

ответ

1

Вы никогда не возвращайтесь с функции разрешения обещаний. И вам не нужно откладывать:

var last = subtotal.getText().then(function(sub) { 
    return delivery_fee.getText().then(function(fee) { 
    return parseFloat(sub) - parseFloat(fee) - parseFloat(config.promocodes.referral.discount); 
    }); 
}); 
last.then(function(calc) { 
    expect(grandTotal.getText()).toBe("$" + calc); 
}); 
+0

booah @alecxe это неожиданно для меня (я только сейчас изучаю обещания). Кажется, у меня есть много, чтобы узнать еще с обещаниями. Благодарю. – faboolous

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