2017-10-13 15 views
2

방금 ​​Bryntum Siesta와 ExtJs를 사용하여 자동 테스트를 시작했습니다. 내 첫 번째, 나는 아주 간단한 테스트 작업을 기대했다. 이제 DRY 코드에 문제가 발생했습니다.시에스타의 글로벌 기능

로그인 테스트를 위해 DRY 코드를 작성하려고합니다.

실제로하는 두가지 경우가 있습니다 - 유효한 데이터 와 로그인 - 그것은 전역 변수/함수와 함께 일하는 것이 자바에서 유효하지 않은 데이터 (잘못된 암호 및/또는 사용자 이름)

에 로그인. 그리고 전 자바 스크립트 전역 변수와 같은 것을했습니다. 하지만 작동하지 않습니다.

그래서 난 내 적격 심사 기능이 있습니다

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

를 내 목표는 내 TESTFILE에() 내 t.chain에 전화하는 것입니다

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

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

을 내가했다 함수를 호출 할 때 체인 위의이 테스트 파일에서 만들어지면 작동합니다. 일부 기본적인 자바 스크립트 질문이지만 미안하지만, 점점 더 황폐 해지고 있습니다. D

미리 감사드립니다!

+1

전체 테스트 파일을 게시 할 수 있습니까? 그리고 어떤 오류가 있습니까? – pagep

답변

3

Test 클래스를 확장하여 유틸리티 메소드를 추가하고 DRY 위반을 피할 수 있습니다. 이 가이드 게시물은 다음을 요약합니다. https://www.bryntum.com/docs/siesta/#!/guide/extending_test_class

전달 된 숫자의 홀수 패리티를 검사하는 2 가지 특수 어설 션을 만듭니다. 통상, assertion는, 그 문장을 체크해, 결과를, 「Siesta.Test # pass」메소드 또는 「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} 메소드 문서를 참조하십시오. 테스트 클래스를로드한다

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

    testClass : MyProject.MyTestClass, 

    preload  : [ 
     ... 
    ] 
}) 

:

은 하네스 당신이 {@link Siesta.Harness # TestClass에} 구성 옵션을 설정하여 사용하는 테스트 클래스를 지정해야 새 테스트 클래스를 사용하여 만들려면 바로 낮잠-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