TestCafe 默认与命名类

Posted

技术标签:

【中文标题】TestCafe 默认与命名类【英文标题】:TestCafe Default vs Named Classes 【发布时间】:2019-03-28 23:48:26 【问题描述】:

查看 TestCafe 的页面对象模型,我注意到所有类都标有 default 而不是典型的命名类。

http://devexpress.github.io/testcafe/documentation/recipes/using-page-model.html

我想知道这背后的原因是什么,它是否有助于测试控制器的通过和浏览器操作的排队?

TestCafe 允许您避免将测试控制器显式传递给方法。相反,您可以将 t 导入页面模型文件。 link

我想避免使用 this article 建议的默认类,但我想知道 TestCafe 特有的权衡取舍。谢谢。

【问题讨论】:

【参考方案1】:

TestCafe 不需要使用default 关键字。此外,它不影响测试通过或浏览器的操作。这只是一种从具有一个类的模块中导出/导入类的方法。如果你想写自己的page model,你可以使用一个模块和两个类:

页面模型:

import  Selector  from 'testcafe';

export class PageModel1 
    constructor () 
        this.h1  = Selector('h1');
        this.div = Selector('div');
    


export class PageModel2 
    constructor () 
        this.body = Selector('body');
        this.span = Selector('span');
    

测试代码:

import  PageModel1, PageModel2  from './models';

const pm1 = new PageModel1();
const pm2 = new PageModel2();

test(`Recreate invisible element and click`, async t => 
    await t.click(pm1.div);
    await t.click(pm1.h1);

    await t.click(pm2.body);
    await t.click(pm2.span);
);

这只是组织代码的问题,因此您可以以适合您的方式编写它。

【讨论】:

以上是关于TestCafe 默认与命名类的主要内容,如果未能解决你的问题,请参考以下文章

类命名空间与对象实例的命名空间

TP框架 命名空间 与第三方类

私有类函数与未命名命名空间中的函数

类命名空间与对象实例的命名空间 and 面向对象的组合用法

如何将 XPath 与没有前缀的默认命名空间一起使用?

类命名空间与对象实例的命名空间和下面向对象的组合用法