2017-10-13 132 views
2

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

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

这里包括两种情况: - 有效的数据 一个登录 - 与非有效数据(错误的密码和/或用户名)

在java中的登录,它将与全局变量/职能的工作。 而我认为,我做过像JavaScript全局变量之前的事情。 但它不起作用。

所以,我有我的试用功能:

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

,我的目标是把它叫我t.chain()在我的TESTFILE:

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

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

当我打电话,这是一个功能在这个测试文件中创建的链,它确实工作。 对不起,如果它的一些基本的JavaScript问题,但即时通讯越来越蹂躏:D

在此先感谢!

+1

你能发布整个测试文件吗?你有什么错误? – pagep

回答

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  : [ 
     ... 
    ] 
}) 

测试类应该被加载午睡-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 
}) 
+0

我会在周三的工作中尝试这个,谢谢! :) – adamswebspace

+0

嘿@mats我遇到了一个新问题。 – adamswebspace

+0

我用你展示的方式做了一个测试课。 使用我的第一个测试函数(这是一个测试函数,它取值并用console.log打印出来) 如果我在类中添加另一个方法并像使用isEven()函数一样使用它,我得到一个错误消息说:isOdd不是一个函数,当我使用文档中的函数时会出现这种情况,你知道那里有什么问题吗? – adamswebspace