午睡中的全球功能

时间:2017-10-13 14:29:05

标签: javascript function extjs global-variables siesta

我刚刚开始使用Bryntum Siesta和ExtJs进行自动化测试。 我的第一个非常简单的测试工作就像我预期的那样 现在我遇到了DRY-Code的问题。

我正在尝试为登录测试编写DRY代码。

这里实际上有两种情况: - 使用有效数据登录 - 使用无效数据登录(密码错误和/或用户名)

在java中,它可以使用全局变量/函数。 我想,之前我做过类似javascript全局变量的事情。 但它不起作用。

所以我有我的试用功能:

    var testFunction = function(){
    console.log("I am a global function, and i am working!");
};

我的目标是在我的测试文件中的t.chain()中调用它:

{
            type: LoginUsername, 
            target: ">>#loginviewIdemId #loginForm #pwTriggerForm #fldName",
            desc: 'Type in Username',
        },

        function(next) {
            testFunction();
            next();
        },

当我调用在链上方的这个测试文件中创建的函数时,它确实有效。 我很抱歉,如果它是一些基本的javascript问题,但我被摧毁:D

提前致谢!

1 个答案:

答案 0 :(得分:3)

您可以扩展Test类以添加实用程序方法并避免DRY违规。本指南总结了它:https://www.bryntum.com/docs/siesta/#!/guide/extending_test_class

让我们创建2个特殊断言,它将检查传递数的奇数奇偶校验。通常,断言需要检查其语句并使用{@link Siesta.Test #pass}或{@link Siesta.Test#fail}方法报告结果。

Class('MyProject.MyTestClass', {
    isa     : Siesta.Test.ExtJS,

    methods : {

        isOdd : function (number, description) {
            if (number % 2) {
                this.pass(description);
            } else {
                this.fail(description, {
                    assertionName   : 'isOdd',
                    got             : number,
                    annotation      : 'Need odd number'
                });
            }
        },

        isEven : function (number, description) {
            if (!(number % 2)) {
                this.pass(description);
            } else {
                this.fail(description, {
                    assertionName   : 'isEven',
                    got             : number,
                    annotation      : 'Need even number'
                });
            }
        }
    }
})

如果失败,请尝试尽可能多地提供有关失败的信息,并以可读的形式格式化失败消息。请参考{@link Siesta.Test#fail} 其他选项的方法文档。

要使线束使用您的新测试类,您必须通过设置{@link Siesta.Harness#testClass}配置选项来指定要使用的测试类:

harness.configure({
    title       : 'Awesome Test Suite',

    testClass   : MyProject.MyTestClass,

    preload     : [
        ...
    ]
})

应该在siesta-all.js文件之后加载测试类:

<!DOCTYPE html>
<html>
    <head>
        <link rel="stylesheet" type="text/css" href="__path_to_siesta__/resources/css/siesta-all.css">
        <script type="text/javascript" src="__path_to_siesta__/siesta-all.js"></script>

        <!-- The file with new test class -->
        <script type="text/javascript" src="lib/MyTestClass.js"></script>

        <script type="text/javascript" src="index.js"></script>
    </head>

    <body>
    </body>
</html>

现在,您可以在所有测试中使用自定义断言或实用程序方法:

describe('My test', function(t) {
    var nbr = 1;

    t.isEven(nbr); // Will fail
})