无法将变量从方法传递给测试 - 量角器

时间:2016-03-10 08:09:19

标签: typescript promise protractor

我正在写一个测试,检查我有多少金币。我正在使用typescrypt和量角器。

我有一个方法GetAmoutOfChips:

 $('.grid').load("league_news1.php",
                 {'group_no':track_load,'leagueid':leagueid}, 
                 function() {
                     track_load++;
                     var $grid = $('.grid').masonry({
                          // set itemSelector so .grid-sizer is not used in layout
                          itemSelector: '.grid-item',
                          // use element for option
                          columnWidth: '.grid-sizer',
                          percentPosition: true,
                          gutter: 10
                        })

                        // layout Masonry after each image loads
                        $grid.imagesLoaded().progress( function() {
                            $grid.masonry('layout');
                        });
                    });
                 }
 ); //load first group

我想在测试中使用它。所以我正在做以下事情:

   $(document).ready(function() {

      function changeText(){
        $("#myDiv").text('test')
      }

      setTimeout(changeText, 2000);

    });

console.log#1返回我想要使用的值。 console.log#2返回undentified。所以我无法将变量传递给测试。如何将变量从方法传递给测试?

1 个答案:

答案 0 :(得分:1)

您必须在然后中执行所有操作。您还可以在那里返回值以创建另一个承诺。

public static GetAmountOfChips(): PromiseLike<any> {
    NavigateTo.myProfile();
    browser.sleep(900);
    let promise = MyProfile.Basic.chipsAmount.getText().then((chipAmount) => {
        // this is executed asynchronously
        MyProfile.Basic.close.click();

        // return a value to create another promise        
        return parseInt(chipAmount);

    });

    return promise;
}

承诺可能会令人困惑,您可以找到更多here

在测试中,您还必须在然后功能中进行检查。

Actions.Basic.GetAmountOfChips().then((chipAmount: number) => {
  // test here not outside 
  expect(chipAmount).toBe(10);
});