2013-12-08 4 views
3

최근 JS와 모카를 사용하기 시작했습니다.모카를 사용하여 시나리오 재사용

필자는 이미 몇 가지 테스트를 작성했지만 지금은 이미 작성한 테스트를 다시 사용해야 할 때가되었습니다. 나는 "이"/, 재사용 "설명"을 찾아 피곤했지만 유용한 무언가를 찾을 수 없습니다

...

사람이 좋은 예 있습니까? 각 테스트를 고려

감사가

답변

6

고려를 사용할 수 있습니다 더 간결하게 유지하기 위해 beforeEach를 사용할 수 말했다 만약 당신이 유닛 테스트를한다면, 컴포넌트 간의 통합 문제로 인해 에러를 잡을 수 없을 것이며, 컴포넌트를 함께 테스트해야 할 수도 있습니다. 이러한 테스트를 실행하려면 모카를 버리는 것이 부끄러운 일입니다. 따라서 모카와 같은 일반적인 패턴을 따르지만 약간의 점에서 차이가있는 테스트를 실행하고 싶을 수도 있습니다.

이 문제를 해결 한 방법은 테스트 기능을 동적으로 만드는 것입니다. 다음과 같이 보입니다.

describe("foo", function() { 
    function makeTest(paramA, paramB, ...) { 
     return function() { 
      // perform the test on the basis of paramA, paramB, ... 
     }; 
    } 

    it("test that foo does bar", makeTest("foo_bar.txt", "foo_bar_expected.txt", ...)); 
    it("test what when baz, then toto", makeTest("when_baz_toto.txt", "totoplex.txt", ...)); 
    [...] 
}); 

실제 사례는 here입니다.

makeTest 함수가 describe 범위에 있어야하는 것은 없습니다. 다른 테스트에서 사용하기에 충분하다고 여겨지는 종류의 테스트가있는 경우 모듈에 넣고 require라고 입력하면됩니다.

0

단 하나의 기능/장치를 테스트하기 위해 설계, 일반적으로 당신은 당신의 테스트를 다시 사용하지 않도록합니다. 각 테스트를 독립적으로 유지하여 테스트의 종속성을 최소화하는 것이 가장 좋습니다.

은 당신이 당신의 시험에서 자주 반복 뭔가가 있다면, 당신은

describe("Something", function() { 

    // declare your reusable var 
    var something; 

    // this gets called before each test 
    beforeEach(function() { 
    something = new Something(); 
    }); 

    // use the reusable var in each test 
    it("should say hello", function() { 
    var msg = something.hello(); 
    assert.equal(msg, "hello"); 
    }); 

    // use it again here... 
    it("should say bye", function() { 
    var msg = something.bye(); 
    assert.equal(msg, "bye"); 
    }); 

}); 

심지어 비동기 beforeEach

beforeEach(function(done) { 
    something = new Something(); 

    // function that takes a while 
    something.init(123, done); 
}); 
관련 문제