TypeError: loginScreen.visibleOfWelcome is not a function

TypeError: loginScreen.visibleOfWelcome is not a function

我想访问 javascript class 中定义的方法。 运行 代码时,我收到错误

TypeError: loginScreen.visibleOfWelcome is not a function

这是我的代码: firstPage.CCC.js

module.exports = class LoginScreen {

    get welcome() {
      return element(by.id("welcome"));
    }


    visibleOfWelcome() {
       expect(this.welcome).toBeVisible();
    }

  }

firstTest.specs.js

var loginScreen = require("./firstPage.CCC.js");

describe('Example', () => {
  beforeEach(async () => {
    await device.reloadReactNative();
  });

    it('should have welcome screen', async () => {
      await loginScreen.visibleOfWelcome();
    });
  })

如果我写 await loginScreen.visibleOfWelcome(); 然后我得到一个错误

TypeError: loginScreen.visibleOfWelcome is not a function

if write await loginScreen.visibleOfWelcome; 然后我的代码工作文件。

知道为什么吗?我想打电话给 await loginScreen.visibleOfWelcome();

您尚未实例化 class LoginScreen,因此您无法访问它的 none 静态成员,例如 visibleOfWelcome。您必须在导出之前或导入之后创建 class 的实例才能访问它的成员(这就是为什么它是 OOP)。

module.exports = new LoginScreen();

// Or

var LoginScreen = require("./firstPage.CCC.js");
var loginScreen = new LoginScreen();

尝试以下解决方案:

export class LoginScreen {

    get welcome() {
      return element(by.id("welcome"));
    }


    visibleOfWelcome() {
       expect(this.welcome).toBeVisible();
    }

  }

现在您可以这样做:

var LoginScreen = require("./firstPage.CCC");
var loginScreen= new LoginScreen();

describe('Example', () => {
  beforeEach(async () => {
    await device.reloadReactNative();
  });

    it('should have welcome screen', async () => {
      await loginScreen.visibleOfWelcome();
    });
  })

希望对你有用。