Mocha에서 발생한 오류 테스트
이 질문에 이미 답변이 있습니다.
이 문제에 대한 도움을 찾고 싶습니다. 내가 작성중인 응용 프로그램에 대한 테스트를 작성하려고합니다. 다음 샘플 코드에서 문제를 추출했습니다. 오류가 발생했는지 테스트하고 싶습니다. 저는 Testacular를 프레임 워크로 mocha와 어설 션 라이브러리로 chai를 사용하는 테스트 러너로 사용하고 있습니다. 테스트가 실행되었지만 오류가 발생하여 테스트가 실패했습니다! 어떤 도움이라도 대단히 감사합니다!
function iThrowError() {
throw new Error("Error thrown");
}
var assert = chai.assert,
expect = chai.expect;
describe('The app', function() {
describe('this feature', function() {
it("is a function", function(){
assert.throw(iThrowError(), Error, "Error thrown");
});
});
});
함수를 assert.throws()
올바른 방법으로 전달하지 않습니다 .
assert.throws()
함수의 첫 번째 파라미터로서의 기능을 기대하고있다. 코드에서 iThrowError를 호출하고을 호출 할 때 반환 값을 전달합니다 assert.throws()
.
기본적으로 다음을 변경합니다.
assert.throws(iThrowError(), Error, "Error thrown");
이에:
assert.throws(iThrowError, Error, "Error thrown");
문제를 해결해야합니다.
최상위 답변에 추가 하여 테스트의 일부로 함수를 호출해야하는 경우 (즉, 특정 매개 변수가 전달 된 경우에만 함수가 오류를 발생시켜야 함) 익명 함수로 함수 호출을 래핑하거나 ES6 +에서, 화살표 함수 표현식으로 함수를 전달할 수 있습니다.
// Function invoked with parameter.
// TEST FAILS. DO NOT USE.
assert.throws(iThrowError(badParam), Error, "Error thrown"); // WRONG!
// Function invoked with parameter; wrapped in anonymous function for test.
// TEST PASSES.
assert.throws(function () { iThrowError(badParam) }, Error, "Error thrown");
// Function invoked with parameter, passed as predicate of ES6 arrow function.
// TEST PASSES.
assert.throws(() => iThrowError(badParam), Error, "Error thrown");
그리고 철저 함을 위해 좀 더 문자 그대로의 버전이 있습니다.
// Explicit throw statement as parameter. (This isn't even valid JavaScript.)
// TEST SUITE WILL FAIL TO LOAD. DO NOT USE, EVER.
assert.throws(throw new Error("Error thrown"), Error, "Error thrown"); // VERY WRONG!
// Explicit throw statement wrapped in anonymous function.
// TEST PASSES.
assert.throws(function () { throw new Error("Error thrown") }, Error, "Error thrown");
// ES6 function. (You still need the brackets around the throw statement.)
// TEST PASSES.
assert.throws(() => { throw new Error("Error thrown") }, Error, "Error thrown");
문제를 해결할 수 있었지만 특정 오류를 확인할 수 없었습니다. Chai의 expect / should 구문을 사용하여이를 수행하려면 throw () 의 다른 서명에서 매개 변수를 사용할 수 있습니다 .
@param{ ErrorConstructor } constructor
@param{ String | RegExp } expectederror message
@param{ String } message _optional_
귀하의 예에서 다음 중 하나를 사용할 수 있어야합니다.
expect(iThrowError).to.throw(/Error thrown/);
expect(iThrowError).to.throw(Error, /Error thrown/);
expect(iThrowError).to.throw(new Error('Error thrown'));
그리고 (다시 chai의 문서에서) 다음을 사용하여 다른 오류 메시지를 필터링 할 수 있습니다.
expect(iThrowError).to.throw(Error).and.not.throw(/Another Error thrown/);
도움이 되었기를 바랍니다!
참고URL : https://stackoverflow.com/questions/14966821/testing-for-errors-thrown-in-mocha
'programing' 카테고리의 다른 글
SqlServer 용 C #에서 간단한 SQL 쿼리를 이스케이프하는 방법 (0) | 2020.10.27 |
---|---|
Intellij Idea-생성 된 변수에 최종 키워드 자동 추가 (0) | 2020.10.26 |
객체 속성 및 JSON.stringify 정렬 (0) | 2020.10.26 |
파이썬은“만약 x에 a | b | c | d…”를 포함하는 것을 표현하는 더 깨끗한 방법을 가지고 있습니까? (0) | 2020.10.26 |
MACRO + 0! = 0을 사용하는 이유 (0) | 2020.10.26 |