2014-06-18 4 views
1

나는 모카의 only 방법을 모르는 사람들을 위해CasperJS에서 특정 테스트를 하나만 실행할 수 있습니까?

it.only "should test something" 

에 비슷한 모카 내가 only

를 작성하지 않는다면 시작됩니다 모든 테스트 사이에만이 하나 개의 테스트를 시작된다는 것을 의미합니다 필요

CasperJS에서도 비슷한 기능을 수행 할 수 있습니까? 지금은 기술

+0

_one test_ 란 무엇입니까? 파일/시나리오, 단계? 단언? 어설 션을 걸러 내시겠습니까? – Fanch

+0

@Fanch 시나리오라고 생각합니다. 나는. 'casper.test.begin' –

답변

0

성가신 "/ 주석 코멘트"를 사용하고 당신은 인수 옵션을 사용할 수 있습니다

그리고 당신의 casperjs 파일에 casperjs test scriptName.js --only=true :

if (casper.cli.get("only")){var only=true;} 
else {var only=false;} 

한 다음 원하는 주장하기 전에 :

if (!only){ test.assertExists(....);} 
else {"should test something"} 

비슷한 방법으로 반대 작업을 수행 할 수 있습니다.

편집 :

var setLevel = function(level){ 
    if(casper.cli.get("mode") !== level){ 
     casper.test.done(); 
    } 
}; 


casper.test.begin('\n***** Scenario : *****',{ 
setUp: function(test) { 
    setLevel("only"); 
}, 

test: function(test){ 
    "use strict"; 
    casper.start() 
    .run(function() { 
      this.test.comment('--- Done ---\n'); 
      test.done(); 
    }); 
} 
}); 
: 그것은 당신이 casperjs에게 setUp() 기능을 사용하고 같은 명령 옵션 및 casper.test.done()을 사용하여 시나리오를 필터링하는) (다른 함수를 호출 할 수있는 시나리오가 있다면

casperjs test path/to/folder --mode="only"으로 전화를 걸면 레벨이 으로 설정되지 않은 모든 시나리오를 즉시 닫습니다. 그래도 로그를 열어 볼 수 있습니다. 표시하지 않으려면 앞에 casper.test.setUp() 메서드를 사용하십시오. 네, begin()을 호출하기 전에 테스트를 끝내는 것이 이상합니다. 그러나 잘 기억한다면 작동하는 것입니다.

그것은 또한 못생긴 해킹이지만 나에게는 해결책이다. 문제는 모든 파일에 setUp()setLevel()을 사용해야한다는 것입니다. 어쨌든 그것을 할 네이티브 옵션이 없습니다.

+0

그건 못생긴 해킹이 아니라 해결책이다 –

+0

더보기 ugly 해킹을 참조하십시오 :) – Fanch

0

casper.test.begin을 감싸는 두 가지 기능을 직접 만들고 사용하십시오.

testcase.it("something", function suite(test){ 
    test.assert(true); 
}); 

testcase.itOnly("something2", function suite(test){ 
    test.assert(true); 
}); 

testcase.it("something3", function suite(test){ 
    test.assert(true); 
}); 

testcase.build(); 

출력 될 것입니다 : 당신은 다음이 방법으로 시나리오를 쓸 수

var testcase = (function(casper){ 
    var scenarios = [], 
     onlySet = false; 
    return { 
     it: function(){ 
      if (!onlySet) { 
       scenarios.push(arguments); 
      } 
     }, 
     itOnly: function(){ 
      onlySet = true; 
      scenarios = [arguments]; 
     }, 
     build: function(){ 
      scenarios.forEach(function(scenario){ 
       casper.test.begin.apply(casper.test, scenario); 
      }); 
     } 
    }; 
})(casper); 

: 당신은 실제로 일정은 테스트 (원숭이 패치 버전에 점프 아래 참조) 제 기능을해야합니다 :

# something2 
PASS Subject is strictly true 

당신은 물론 원숭이의 casper.test 인스턴스를 패치 할 수 있습니다 귀하의 기능 :

(function(casper){ 
    // IIFE to avoid leaking scenarios 
    var scenarios = [], 
     onlySet = false, 
     oldBegin = casper.test.begin; 
    casper.test.begin = function(){ 
     if (!onlySet) { 
      scenarios.push(arguments); 
     } 
    }; 
    casper.test.beginOnly = function(){ 
     onlySet = true; 
     scenarios = [arguments]; 
    }; 
    casper.test.build = function(){ 
     scenarios.forEach(function(scenario){ 
      oldBegin.apply(casper.test, scenario); 
     }); 
    }; 
})(casper); 

casper.test.begin("something", function suite(test){ 
    test.assert(true); 
}); 

casper.test.beginOnly("something2", function suite(test){ 
    test.assert(true); 
}); 

casper.test.begin("something3", function suite(test){ 
    test.assert(true); 
}); 

casper.test.build(); 
관련 문제