최근 JS와 모카를 사용하기 시작했습니다.모카를 사용하여 시나리오 재사용
필자는 이미 몇 가지 테스트를 작성했지만 지금은 이미 작성한 테스트를 다시 사용해야 할 때가되었습니다. 나는 "이"/, 재사용 "설명"을 찾아 피곤했지만 유용한 무언가를 찾을 수 없습니다
...
이사람이 좋은 예 있습니까? 각 테스트를 고려
감사가
최근 JS와 모카를 사용하기 시작했습니다.모카를 사용하여 시나리오 재사용
필자는 이미 몇 가지 테스트를 작성했지만 지금은 이미 작성한 테스트를 다시 사용해야 할 때가되었습니다. 나는 "이"/, 재사용 "설명"을 찾아 피곤했지만 유용한 무언가를 찾을 수 없습니다
...
이사람이 좋은 예 있습니까? 각 테스트를 고려
감사가
고려를 사용할 수 있습니다 더 간결하게 유지하기 위해 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
라고 입력하면됩니다.
단 하나의 기능/장치를 테스트하기 위해 설계, 일반적으로 당신은 당신의 테스트를 다시 사용하지 않도록합니다. 각 테스트를 독립적으로 유지하여 테스트의 종속성을 최소화하는 것이 가장 좋습니다.
은 당신이 당신의 시험에서 자주 반복 뭔가가 있다면, 당신은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);
});