如何在打字稿中的对象中使用 class 函数?
How to use class function in Object in typescript?
我在 angular 中写了一个 and to end 测试。这是页面对象的代码 class.
export class AppPage {
NodeArrow(node) {
let NodeArrow = $$('.toggle-children').get(node);
return NodeArrow;
}
}
并且我试图从 class 之外使用它。
import { AppPage } from './app.po';
describe('Interactive component', async () => {
beforeEach(async () => {
page.navigateToEditor();
browser.waitForAngularEnabled(false);
});
let page = await new AppPage();
it('Deleting item in Paramter tab works', async() => {
await browser.wait(EC.visibilityOf(page.NodeArrow(0)), 10000);
}
但它说 NodeArrow 未定义。我怀疑我是否用打字稿正确地写下了这个功能。请让我知道我做错了什么
class 的构造函数不能 return promise,所以你不能 await
它。
import { AppPage } from './app.po';
describe('Interactive component', async () => {
beforeEach(async () => {
page.navigateToEditor();
browser.waitForAngularEnabled(false);
});
let page = new AppPage(); // No await
it('Deleting item in Paramter tab works', async () => {
await browser.wait(EC.visibilityOf(page.NodeArrow(0)), 10000);
}
});
如果您有需要在正确初始化对象之前完成的异步代码,您可以使用静态辅助函数:
export class AppPage {
private constructor() {
// non async code
}
static async create() : Promise<AppPage> {
var r = new AppPage();
await r.asynInit()
return r
}
async asynInit() : Promise {
// async cod
await delay(100);
}
NodeArrow(node) {
let NodeArrow = $$('.toggle-children').get(node);
return NodeArrow;
}
}
import { AppPage } from './app.po';
describe('Interactive component', async () => {
beforeEach(async () => {
page.navigateToEditor();
browser.waitForAngularEnabled(false);
});
let page = await AppPage.create();
it('Deleting item in Paramter tab works', async () => {
await browser.wait(EC.visibilityOf(page.NodeArrow(0)), 10000);
}
});
从您的 new AppPage()
中删除 await
import {
AppPage
} from './app.po';
describe('Interactive component', async () => {
beforeEach(async () => {
page.navigateToEditor();
browser.waitForAngularEnabled(false);
});
let page = new AppPage(); // remove await
it('Deleting item in Paramter tab works', async () => {
await browser.wait(EC.visibilityOf(page.NodeArrow(0)), 10000);
})
});
我在 angular 中写了一个 and to end 测试。这是页面对象的代码 class.
export class AppPage {
NodeArrow(node) {
let NodeArrow = $$('.toggle-children').get(node);
return NodeArrow;
}
}
并且我试图从 class 之外使用它。
import { AppPage } from './app.po';
describe('Interactive component', async () => {
beforeEach(async () => {
page.navigateToEditor();
browser.waitForAngularEnabled(false);
});
let page = await new AppPage();
it('Deleting item in Paramter tab works', async() => {
await browser.wait(EC.visibilityOf(page.NodeArrow(0)), 10000);
}
但它说 NodeArrow 未定义。我怀疑我是否用打字稿正确地写下了这个功能。请让我知道我做错了什么
class 的构造函数不能 return promise,所以你不能 await
它。
import { AppPage } from './app.po';
describe('Interactive component', async () => {
beforeEach(async () => {
page.navigateToEditor();
browser.waitForAngularEnabled(false);
});
let page = new AppPage(); // No await
it('Deleting item in Paramter tab works', async () => {
await browser.wait(EC.visibilityOf(page.NodeArrow(0)), 10000);
}
});
如果您有需要在正确初始化对象之前完成的异步代码,您可以使用静态辅助函数:
export class AppPage {
private constructor() {
// non async code
}
static async create() : Promise<AppPage> {
var r = new AppPage();
await r.asynInit()
return r
}
async asynInit() : Promise {
// async cod
await delay(100);
}
NodeArrow(node) {
let NodeArrow = $$('.toggle-children').get(node);
return NodeArrow;
}
}
import { AppPage } from './app.po';
describe('Interactive component', async () => {
beforeEach(async () => {
page.navigateToEditor();
browser.waitForAngularEnabled(false);
});
let page = await AppPage.create();
it('Deleting item in Paramter tab works', async () => {
await browser.wait(EC.visibilityOf(page.NodeArrow(0)), 10000);
}
});
从您的 new AppPage()
await
import {
AppPage
} from './app.po';
describe('Interactive component', async () => {
beforeEach(async () => {
page.navigateToEditor();
browser.waitForAngularEnabled(false);
});
let page = new AppPage(); // remove await
it('Deleting item in Paramter tab works', async () => {
await browser.wait(EC.visibilityOf(page.NodeArrow(0)), 10000);
})
});