Switch 语句没有返回任何值

Switch statement is returning no value

我正在编写一个测试,它读取一个字符串,然后获取该字符串并将其应用于 switch 语句。然后我将字符串与大小写匹配并设置一个整数值,我将其传递回规范页面,然后将 int 值传递给另一个测试,我将其用于 if 语句。我无法让 int 通过,因此 if 语句将无法正常工作。

切换对象:

var appsNotPurchased = 0;
this.checksHomeSublevel = function(mmCode) {
    browser.get('https://iplan-qa.meetingmatrix.com/Home/Index/' + mmCode);
    marketingObjects.level.getText().then(function(text) {
      var homeText = text;
      browser.get('https://iplan-qa.meetingmatrix.com/Home/Apps/' + mmCode);
      expect($('div.apps-subscription > span').getText()).toEqual('iPlan Level: ' + homeText);
      switch (homeText) {
        case 'Select':
          console.log(homeText);
          appsNotPurchased = 6;
          return appsNotPurchased;
          break;
        case 'Content':
          console.log(homeText);
          appsNotPurchased = 0 || 1 || 2 || 3 || 4 || 5 || 6;
          return appsNotPurchased;
          break;
      }


    });

testSpec 描述函数:

describe('should upload media: ', function() {

  it('should select add media', function() {
    var mmCode = "ACC0572";
    var appsNotPurchased = appsObjects.checksHomeSublevel(mmCode);
    appsObjects.checksSubLevelSelect(mmCode, appsNotPurchased);
  });

});

我将值传递给的对象:

    this.checksSubLevelSelect = function(mmCode, appsNotPurchased) {

      //counts the apps
      apps.count().then(function(count) {
        expect(count).toEqual(7);
        for (var i = 0; i < count; i++) {
          if (appsPlace == appsNotPurchased) {
            //does something here
          } else {
            //does something here
          }
          appsPlace++;
        }
      });
    };

您应该 returning 对象而不是 || 语句。另外 return 语句应该写在 switch 外面而不是里面。

  • 最简单的解决方案是使用全局变量 appsNotPurchased 来存储值,然后您可以在测试规范中使用它而无需 returning。但那将是一个糟糕的编码标准。
  • 第二种解决方案是 return 承诺函数作为量角器异步执行。

这是第二种解决方案的示例 -

this.checksHomeSublevel = function(mmCode) {
    var getval = marketingObjects.level.getText().then(function(text) {
        switch (homeText) {
          case 'Select':
            console.log(homeText);
            appsNotPurchased = [6];
            break;
          case 'Content':
            console.log(homeText);
            appsNotPurchased = [0, 1, 2, 3, 4, 5, 6]; //either use array or object
            break;
          default:
            console.log("Default");
        }
        return appsNotPurchased;
    });
    return protractor.promise.fulfilled(getval);
};

然后像规范中的承诺一样使用它 -

appsObjects.checksHomeSublevel(mmCode).then(function(appsNotPurchased){
    appsObjects.checksSubLevelSelect(mmCode, appsNotPurchased);
});

现在在你的函数中使用上面的结果 -

   this.checksSubLevelSelect = function(mmCode, appsNotPurchased) {

      //counts the apps
      apps.count().then(function(count) {
        expect(count).toEqual(7);
        for (var i = 0; i < count; i++) {
          if (appsPlace == appsNotPurchased[i]) {
            //does something here
          } else {
            //does something here
          }
          appsPlace++;
        }
      });
    };

希望对您有所帮助。