단위 테스트 실제 코드를 테스트 할 때 많은 상황에서는 테스트를 어렵게 만듭니다. 함수가 호출되는지 확인하는 방법? Ajax 통화를 테스트하는 방법은 무엇입니까? 또는 의 코드를 사용 하시겠습니까? 현재 <img src="/static/imghw/default1.png" data-src="https://img.php.cn/upload/article/000/000/000/173967655173288.jpg" class="lazy" alt="JavaScript Testing Tool Showdown: Sinon.js vs testdouble.js ">를 사용하려면 스탠드-인 -테스트를 위해 테스트하기 어려운 테스트를보다 쉽게 테스트 할 수 있도록 코드를 교체해야합니다.
수년 동안 Sinon.js는 JavaScript 테스트에서 테스트 스탠드를 작성하는 실제 표준이었습니다. 테스트를 작성하는 JavaScript 개발자에게는 필수 도구입니다. 실제 응용 프로그램에 대한 테스트를 작성하는 것은 거의 불가능하기 때문입니다.
최근에 TestDouble.js라는 새로운 라이브러리가 떠오르고 있습니다. 여기에는 몇 가지 차이가 있다는 점을 제외하고 Sinon.js와 비슷한 기능이 있습니다. setTimeout
이 기사에서는 Sinon.js와 TestDouble.js가 무엇을 제공하는지 탐구하고 각 장단점을 비교할 것입니다. Sinon.js는 여전히 더 나은 선택입니까, 아니면 도전자가 이길 수 있습니까?
참고 : 스탠드 인 테스트에 익숙하지 않은 경우 먼저 내 sinon.js 튜토리얼을 읽는 것이 좋습니다. 이것은 여기에서 논의 할 개념을 더 잘 이해하는 데 도움이 될 것입니다. 키 포인트
testdouble.js의 목표 중 하나는이 용어 사이의 혼란을 줄이는 것입니다.
sinon.js 및 testdouble.js 의 개요
먼저 sinon.js와 testdouble.js 간의 기본 사용 비교를 살펴 보겠습니다.
Sinon은 Spy, Stubs 및 Mocks의 세 가지 테스트 스탠드 인 개념을 가지고 있습니다. 아이디어는 각각 다른 사용 시나리오를 나타냅니다. 이를 통해 도서관은 다른 언어의 사람들이나 Xunit 테스트 모드와 같은 동일한 용어를 사용하여 책을 읽은 사람에게 더 친숙하게됩니다. 그러나 반면에,이 세 가지 개념은 또한 처음 사용했을 때 Sinon을 이해하기가 더 어려워 질 수 있습니다.
이것은 Sinon 사용의 기본 예입니다 : // 以下是查看函数调用的参数的方法:
var spy = sinon.spy(Math, 'abs');
Math.abs(-10);
console.log(spy.firstCall.args); // 输出:[ -10 ]
spy.restore();
// 以下是控制函数执行方式的方法:
var stub = sinon.stub(document, 'createElement');
stub.returns('not an html element');
var x = document.createElement('div');
console.log(x); // 输出:'not an html element'
stub.restore();
로그인 후 복사
로그인 후 복사
로그인 후 복사
대조적으로, testDouble.js는 더 간단한 API를 선택합니다. 스파이 나 스터브와 같은 개념을 사용하는 대신 JavaScript 개발자가 <🎜 🎜>, <🎜 🎜> 및 <🎜 🎜>와 같이 더 익숙한 언어를 사용합니다. 이로 인해 TestDouble은 시작하기가 더 쉬워지고 특정 작업에 더 적합합니다. 그러나 반면에, 더 고급 용도는 단순히 불가능할 수 있습니다 (때로는 의도적이기도합니다).
다음은 testdouble.js를 사용하는 방법입니다
td.function
testDouble은 더 간단한 언어를 사용합니다. 우리는 "스텁"대신 함수를 "교체"합니다. 정보를 얻으려면 TestDouble "해석"기능이 필요합니다. 그 외에도 지금까지 Sinon과 매우 유사합니다. td.object
이것은 또한 "익명"테스트 스탠드를 작성하는 것으로 확장됩니다
td.replace
및 <🎜 🎜>
Sinon의 스파이와 스터브에는 더 많은 정보를 제공하는 속성이 있습니다. 예를 들어, Sinon은
및 <🎜 // 以下是查看函数调用的参数的方法:
var abs = td.replace(Math, 'abs');
Math.abs(-10);
var explanation = td.explain(abs);
console.log(explanation.calls[0].args); // 输出:[ -10 ]
// 以下是控制函数执行方式的方法:
var createElement = td.replace(document, 'createElement');
td.when(createElement(td.matchers.anything())).thenReturn('not an html element');
var x = document.createElement('div');
console.log(x); // 输出:'not an html element'
// testdouble 使用一次调用重置所有测试替身,无需单独清理
td.reset();
로그인 후 복사
로그인 후 복사
로그인 후 복사
와 같은 속성을 제공합니다. TestDouble의 경우이 정보를 :
에서 얻습니다.
가장 큰 차이점 중 하나는 스터브가 설정되고 검증이 수행되는 방법과 관련이 있습니다. Sinon을 사용하면 스터브 후 명령을 연결하고 어설 션을 사용하여 결과를 확인할 수 있습니다. TestDouble.js는 함수를 호출하는 방법 또는 함수 호출을 "연습"하는 방법을 보여줍니다.
var x = sinon.stub();
로그인 후 복사
로그인 후 복사
로그인 후 복사
및 <🎜 🎜>
이것은시기에 어떤 조치를 연결할 수 있는지 알 필요가 없기 때문에 TestDouble의 API를 쉽게 이해하기 쉽게 만듭니다. var x = td.function();
로그인 후 복사
로그인 후 복사
로그인 후 복사
일반 테스트를보다 자세하게 비교하십시오 <🎜 🎜
높은 수준에서 두 라이브러리는 모두 유사합니다. 그러나 실제 프로젝트에서 수행해야 할 일반적인 테스트 작업은 어떻습니까? 몇 가지 차이가 나타나기 시작한 곳을 봅시다. stub.callCount
testdouble.js 없음 스파이 <🎜 stub.args
가장 먼저 주목해야 할 것은 TestDouble.js가 "스파이"라는 개념이 없다는 것입니다. Sinon.js는 기능의 기본 동작을 보존하면서 기능 호출을 교체하여 정보를 얻을 수 있지만 TestDouble.js에서는 불가능합니다. 함수를 TestDouble로 바꾸면 항상 기본 동작이 손실됩니다. td.explain
그러나 이것이 반드시 문제는 아닙니다. 스파이의 가장 일반적인 사용법은 콜백이 호출되는지 확인하기 위해이를 사용하는 것입니다.
// 我们也可以为测试替身命名
var x = td.function('hello');
x('foo', 'bar');
td.explain(x);
console.log(x);
/* 输出:
{
name: 'hello',
callCount: 1,
calls: [ { args: ['foo', 'bar'], context: undefined } ],
description: 'This test double `hello` has 0 stubbings and 1 invocations.\n\nInvocations:\n - called with `("foo", "bar")`.',
isTestDouble: true
}
*/
로그인 후 복사
로그인 후 복사
및 <🎜 🎜>
큰 문제는 아니지만 두 라이브러리 사이의 이러한 차이에 주목하는 것이 여전히 중요합니다. 그렇지 않으면 더 구체적인 방식으로 TestDouble.js에서 스파이를 사용할 수있을 것으로 예상된다면 놀랄 수도 있습니다.
testdouble.js는보다 정확한 입력 <🎜 🎜 var x = sinon.stub();
x.withArgs('hello', 'world').returns(true);
var y = sinon.stub();
sinon.assert.calledWith(y, 'foo', 'bar');
로그인 후 복사
로그인 후 복사
가 필요합니다
두 번째 차이점은 TestDouble이 입력에 더 엄격하다는 것입니다.
Sinon의 스터브 및 어설 션을 사용하면 제공된 매개 변수에 부정확 할 수 있습니다. 예를 들어 묘사하기가 가장 쉽습니다 : <🎜 🎜>
var x = td.function();
td.when(x('hello', 'world')).thenReturn(true);
var y = td.function();
td.verify(y('foo', 'bar'));
로그인 후 복사
및 <🎜 🎜>// 以下是查看函数调用的参数的方法:
var spy = sinon.spy(Math, 'abs');
Math.abs(-10);
console.log(spy.firstCall.args); // 输出:[ -10 ]
spy.restore();
// 以下是控制函数执行方式的方法:
var stub = sinon.stub(document, 'createElement');
stub.returns('not an html element');
var x = document.createElement('div');
console.log(x); // 输出:'not an html element'
stub.restore();
로그인 후 복사
로그인 후 복사
로그인 후 복사
<,> 기본적으로 Sinon은 기능에 얼마나 많은 추가 매개 변수가 제공되는지 신경 쓰지 않습니다. <🎜 🎜>와 같은 함수를 제공하지만 문서의 기본값으로 권장되지 않습니다. <<>와 같은 함수에는 "정확한"변형이 없습니다.
반면에 testDouble.js는 기본적으로 지정된 정확한 매개 변수가 필요합니다. 이것은 디자인에 의한 것입니다. 아이디어는 기능에 테스트에 지정되지 않은 다른 매개 변수가 제공되면 오류가 될 수 있으며 테스트에 실패해야한다는 것입니다. sinon.assert.calledWithExactly
임의의 매개 변수는 testdouble.js에 지정할 수 있지만 이것은 기본값이 아닙니다.
stub.withArgs
사용 <🎜 🎜>, 동작은 sinon.js와 유사합니다.
testdouble.js는 내장 약속 지원 <🎜
가 있습니다
Sinon.js의 약속을 사용하는 것은 복잡하지 않지만 TestDouble.js는 약속을 반환하고 거부하는 내장 방법을 가지고 있습니다.
// 以下是查看函数调用的参数的方法:
var abs = td.replace(Math, 'abs');
Math.abs(-10);
var explanation = td.explain(abs);
console.log(explanation.calls[0].args); // 输出:[ -10 ]
// 以下是控制函数执行方式的方法:
var createElement = td.replace(document, 'createElement');
td.when(createElement(td.matchers.anything())).thenReturn('not an html element');
var x = document.createElement('div');
console.log(x); // 输出:'not an html element'
// testdouble 使用一次调用重置所有测试替身,无需单独清理
td.reset();
로그인 후 복사
로그인 후 복사
로그인 후 복사
및 <🎜 🎜>
<🎜 🎜> <<> 노트 <🎜 ignoreExtraArgs: true
: Sinon-as-Promised를 사용하여 Sinon 1.X에 유사한 편리한 기능을 포함시킬 수 있습니다. Sinon 2.0 및 최신 버전에는
및 <🎜 형태의 약속 지원이 포함됩니다.
testdouble.js의 콜백 지원은 더 강력합니다 <🎜
Sinon과 TestDouble은 스터브 기능 콜백을 쉽게 만들 수있는 방법을 제공합니다. 그러나 작동 방식에는 약간의 차이가 있습니다.
<<> Sinon은 var x = sinon.stub();
로그인 후 복사
로그인 후 복사
로그인 후 복사
를 사용하여 스텁을 첫 번째 함수 <🎜 를 매개 변수로 사용합니다.
var x = td.function();
로그인 후 복사
로그인 후 복사
로그인 후 복사
testDouble.js는 콜백이 last 매개 변수라고 가정합니다. 전화를 연습 할 때 지정할 필요가 없습니다.
TestDouble의 콜백 지원을보다 강력하게 만드는 것은 여러 콜백 또는 다른 콜백 순서로 시나리오의 동작을 쉽게 정의 할 수 있다는 것입니다. stub.resolves
우리가 <🎜…… stub.rejects
라고 부르고 싶다고 가정 해 봅시다
<🎜 의 함수로
를 전달한다는 점에 유의하십시오. 이것은 우리가 콜백으로 사용하려는 매개 변수에 테스트 게블에 알려줍니다.
Sinon을 사용하여 행동을 바꿀 수도 있습니다
<,>이 경우 <🎜 🎜> 대신 를 사용합니다. 우리는 그것을 작동시키기 위해 호출의 특정 인덱스를 제공해야합니다. 이는 특히 많은 매개 변수가있는 함수에서 약간 번거 롭을 수 있습니다. stub.yields
특정 값으로 두 콜백을 호출하려면 어떻게해야합니까?
// 我们也可以为测试替身命名
var x = td.function('hello');
x('foo', 'bar');
td.explain(x);
console.log(x);
/* 输出:
{
name: 'hello',
callCount: 1,
calls: [ { args: ['foo', 'bar'], context: undefined } ],
description: 'This test double `hello` has 0 stubbings and 1 invocations.\n\nInvocations:\n - called with `("foo", "bar")`.',
isTestDouble: true
}
*/
로그인 후 복사
로그인 후 복사
<,> Sinon의 경우, 이것은 단순히 불가능합니다. 여러 통화를 <🎜 🎜>에 연결할 수 있지만 그 중 하나만 호출합니다.
testdouble.js에는 내장 모듈 교체가 있습니다
함수를 로 바꾸는 것 외에도 TestDouble을 사용하면 전체 모듈을 교체 할 수 있습니다.
이것은 주로 교체 해야하는 기능을 직접 내보내는 모듈이있는 경우 주로 유용합니다.
우리가 그것을 testdouble로 교체하고 싶다면 var x = sinon.stub();
x.withArgs('hello', 'world').returns(true);
var y = sinon.stub();
sinon.assert.calledWith(y, 'foo', 'bar');
로그인 후 복사
로그인 후 복사
를 사용할 수 있습니다.// 以下是查看函数调用的参数的方法:
var spy = sinon.spy(Math, 'abs');
Math.abs(-10);
console.log(spy.firstCall.args); // 输出:[ -10 ]
spy.restore();
// 以下是控制函数执行方式的方法:
var stub = sinon.stub(document, 'createElement');
stub.returns('not an html element');
var x = document.createElement('div');
console.log(x); // 输出:'not an html element'
stub.restore();
로그인 후 복사
로그인 후 복사
로그인 후 복사
<.> Sinon.js는 객체의 멤버 기능을 대체 할 수 있지만 이와 같은 모듈을 대체 할 수는 없습니다. Sinon을 사용할 때이를 위해서는 Proxyquire 또는 Rewire와 같은 다른 모듈을 사용해야합니다.
모듈 교체에 대해 주목해야 할 또 다른 사항은 TestDouble.js가 전체 모듈을 자동으로 교체한다는 것입니다. 여기서 예제와 같은 함수 내보내기라면 기능을 대체합니다. 여러 기능이 포함 된 객체 인 경우 모든 기능을 대체합니다. 생성자 및 ES6 클래스도 지원됩니다. Proxyquire와 Rewire는 모두 개별적으로 무엇을 교체 해야하는지 지정해야합니다. // 以下是查看函数调用的参数的方法:
var abs = td.replace(Math, 'abs');
Math.abs(-10);
var explanation = td.explain(abs);
console.log(explanation.calls[0].args); // 输出:[ -10 ]
// 以下是控制函数执行方式的方法:
var createElement = td.replace(document, 'createElement');
td.when(createElement(td.matchers.anything())).thenReturn('not an html element');
var x = document.createElement('div');
console.log(x); // 输出:'not an html element'
// testdouble 使用一次调用重置所有测试替身,无需单独清理
td.reset();
로그인 후 복사
로그인 후 복사
로그인 후 복사
testdouble.js sinon <🎜 에 대한 일부 도우미 함수가 누락되었습니다
Sinon의 에뮬레이션 타이머, 에뮬레이션 XMLHTTPREQUEST 또는 Emulation Server를 사용하는 경우 TestDouble에 존재하지 않는다는 것을 알 수 있습니다.
에뮬레이션 타이머는 플러그인으로 사용할 수 있지만 xmlhttprequests 및 ajax 함수는 다른 방식으로 처리해야합니다.
간단한 솔루션은 사용중인 Ajax 기능을 대체하는 것입니다
testdouble.js <🎜 를 사용하여 테스트 컨텐츠를 정리하는 것이 더 쉽습니다.
Sinon.js의 초보자를위한 일반적인 걸림돌은 종종 스파이와 스터브를 정리하는 것입니다. Sinon 은이 작업을 수행하는 세 가지 다른 방법을 제공합니다.
또는 : <🎜 🎜>
$.post
또는 : <🎜 🎜>
일반적으로 샌드 박스와 <🎜 var x = sinon.stub();
로그인 후 복사
로그인 후 복사
로그인 후 복사
방법을 사용하는 것이 좋습니다. 그렇지 않으면 우연히 스터브 나 스파이를 떠나는 것이 쉽기 때문에 다른 테스트에 문제가 발생할 수 있습니다. 이로 인해 추적하기 어려운 캐스케이드 실패가 발생할 수 있습니다.
testdouble.js는 스탠드 인을 정리하고 테스트하는 방법 만 제공합니다. 권장 방법은
후크에서 호출하는 것입니다.
테스트 후 테스트 스탠드 설정 및 정리 설정을 크게 단순화하여 트랙 오류가 어려울 가능성이 줄어 듭니다.
<<> pros and cons <🎜🎜>
우리는 이제이 두 라이브러리의 기능을 이해했습니다. 둘 다 상당히 비슷한 기능 세트를 제공하지만 서로 다른 디자인 아이디어가 있습니다. 우리는 그것을 장점과 단점으로 분류 할 수 있습니까?
sinon.js에 대해 먼저 이야기합시다. TestDouble.js보다 몇 가지 추가 기능을 제공하며 일부 측면은 구성하기 쉽습니다. 이것은보다 특별한 테스트 시나리오에서 더 높은 유연성을 제공합니다. Sinon.js는 또한 다른 라이브러리에 스파이, 스터브 및 모의와 같은 구성 요소에 더 익숙한 사람들의 언어를 사용하며 테스트 관련 서적에서도 논의되었습니다.
단점은 복잡성을 증가 시킨다는 것입니다. 유연성을 통해 전문가가 더 많은 일을 할 수 있지만, 특정 작업이 TestDouble.js보다 더 복잡하다는 것을 의미합니다. 또한 새로운 사람들이 스탠드 인의 개념을 테스트하기 위해 더 가파른 학습 곡선을 가질 수 있습니다. 사실, 나만큼 친숙한 사람조차도 var x = td.function();
로그인 후 복사
로그인 후 복사
로그인 후 복사
와 의 차이점을 자세히 설명하는 데 어려움을 겪을 수 있습니다! testdouble.js는 더 간단한 인터페이스를 선택했습니다. 대부분의 콘텐츠는 상당히 간단하고 사용하기 쉽고 JavaScript에 더 적합한 반면 Sinon.js는 때때로 다른 언어를 위해 설계된 것처럼 느낍니다. 이 덕분에 일부 디자인 원칙 덕분에 초보자가 시작하기가 더 쉬우 며 숙련 된 테스터조차도 많은 작업을 완료하기가 더 쉬울 것입니다. 예를 들어, TestDouble은 동일한 API를 사용하여 테스트 스탠드를 설정하고 결과를 확인합니다. 또한 더 간단한 청소 메커니즘으로 인해 오류가 덜 발생할 수 있습니다.
testdouble 가장 큰 문제는 일부 설계 원칙으로 인해 발생합니다. 예를 들어, 스파이가 완전히 부족하면 스파이를 사용하는 것을 선호하는 사람들에게는 불가능할 수 있습니다. 이것은 대부분 의견의 문제이며 문제를 전혀 찾지 못할 수도 있습니다. 게다가 TestDouble.js는 업데이트 된 라이브러리이지만 Sinon.js에 대한 심각한 경쟁을 제공하고 있습니다.
함수 별 비교
다음은 함수 별 비교입니다 :
testdouble.js - 기술적으로 말하면 Sinon.js에는 시뮬레이션이 없습니다. 그러나 Sinon의 시뮬레이션은 본질적으로 스터브 및 검증을 포함하는 객체이므로 를 사용하여 유사한 효과를 달성 할 수 있습니다.
는
td.replace(someObject)
를 사용하여 매개 변수 캡처와 유사한 효과를 얻을 수 있습니다 (와 혼동되지 않음).
-
요약 및 결론
stub.yield
sinon.js 및 testdouble.js 모두 상당히 유사한 기능 세트를 제공합니다. 이와 관련하여, 분명히 우수하지는 않습니다. stub.yields
둘 사이의 가장 큰 차이점은 API입니다. Sinon.js는 아마도 조금 더 길며 일을하는 방법에 대한 많은 옵션을 제공합니다. 이것은 장단점 일 수 있습니다. TestDouble.js에는 LEANER API가있어 배우고 사용하기 쉽지만 임의의 디자인으로 인해 일부는 문제가 될 수 있습니다.
그래서 나에게 적합한 것은 무엇입니까?
TestDouble의 디자인 원칙에 동의하십니까? 그렇다면 사용하지 않을 이유가 없습니다. 나는 많은 프로젝트에서 Sinon.js를 사용했으며 TestDouble.js가 Sinon.js에서 수행 한 작업의 95% 이상을 수행하고 나머지 5%는 간단한 해결 방법으로 수행 할 수 있다고 안전하게 말할 수 있습니다.
Sinon.js를 사용하기가 어렵거나 "JavaScript 스타일"TestDouble.js를 찾고있는 경우에도 귀하를위한 것일 수 있습니다. Sinon을 사용하는 법을 배우는 데 많은 시간을 소비하는 저와 같은 사람들조차도 TestDouble.js를 시도하고 당신이 좋아하는지 확인하는 경향이 있습니다.
그러나 TestDouble.js의 일부 측면은 Sinon.js 또는 기타 숙련 된 테스터에 대한 지식을 가진 사람들에게 두통을 유발할 수 있습니다. 예를 들어, 스파이의 완전한 부족이 결정적인 요소 일 수 있습니다. Sinon.js는 여전히 전문가와 가장 유연성을 원하는 사람들에게 좋은 선택입니다.
실제로 테스트 스탠드 인 사용 방법에 대해 자세히 알아 보려면 무료 Sinon.js 가이드를 확인하십시오. sinon.js를 사용하지만 동일한 기술과 모범 사례를 TestDouble.js에 적용 할 수도 있습니다.
문제가 있습니까? 논평? 이미 TestDouble.js를 사용하고 있습니까? 이 기사를 읽은 후 시도해 보시겠습니까? 아래 의견에 알려주십시오.
이 기사는 James Wright, Joan Yin, Christian Johansen 및 Justin Searls가 검토했습니다. itepoint 컨텐츠를 최대한 활용 한 모든 Sitepoint Peer Reviewers에게 감사합니다!
JavaScript 테스트 도구에 대한 자주 질문 : sinon.js vs. testdouble.js
Sinon.js와 TestDouble.js의 주요 차이점은 무엇입니까?
sinon.js 및 testdouble.js는 모두 인기있는 JavaScript 테스트 라이브러리이지만 몇 가지 주요 차이점이 있습니다. Sinon.js는 스파이, 스터브 및 시뮬레이션을 포함한 풍부한 기능 세트와 타이머 및 XHR을 모방하는 유틸리티로 유명합니다. 테스트 프레임 워크와 함께 사용할 수있는 다목적 도구입니다. 반면, TestDouble.js는 테스트 스탠드 인을위한 간단하고 직관적 인 API를 제공하는 데 중점을 둔 미니멀리스트 라이브러리로 테스트 할 시스템의 일부에 대한 대안입니다. 타이머 또는 XHR을 모방하기위한 유틸리티는 포함되어 있지 않지만 사용하기 쉽고 이해하기 쉽도록 설계되었으므로 더 넓은 테스트 방법을 선호하는 사람들에게는 훌륭한 옵션입니다.
sinon.js 및 testdouble.js를 설치하는 방법은 무엇입니까?
sinon.js 및 testdouble.js는 NPM (node.js 패키지 관리자)을 통해 설치할 수 있습니다. Sinon.js의 경우 명령을 사용할 수 있습니다. TestDouble.js의 경우 명령은 입니다. 설치 후 및
를 사용하여 각각 테스트 파일에 소개 할 수 있습니다.
sinon.js 및 testdouble.js를 동시에 사용할 수 있습니까?
예, Sinon.js 및 TestDouble.js는 동일한 프로젝트에서 동시에 사용할 수 있습니다. 그들은 모두 매우 단순하게 단순하고 다른 라이브러리와 잘 작동하도록 설계되었습니다. 그러나 기능이 겹치는 기능이 있으므로 동시에 기능을 사용하면 혼란을 초래할 수 있습니다. 일반적으로 특정 요구 사항과 선호도에 따라 그 중 하나를 선택하는 것이 좋습니다.
sinon.js 및 testdouble.js를 사용하여 스파이를 만드는 방법? npm install sinon
Sinon.js에서는 npm install testdouble
를 사용하여 스파이를 만들 수 있습니다. 이 함수는 매개 변수, 반환 값 및 예외를 포함하여 모든 호출을 기록하는 SPY 객체를 반환합니다. TestDouble.js에서는 const sinon = require('sinon')
를 사용하여 스파이를 만들 수 있습니다. 이 함수는 매개 변수를 포함한 모든 통화를 기록하는 테스트 독립형 기능을 반환합니다. const td = require('testdouble')
sinon.js 및 testdouble.js를 사용하여 스터브를 만드는 방법?
Sinon.js에서는 를 사용하여 스터브를 만들 수 있습니다. 이 함수는 스파이처럼 작동하는 스터브 객체를 반환하지만 반환 값을 지정하거나 예외를 던지는 등 동작을 정의 할 수 있습니다. testdouble.js에서 를 사용하여 스터브를 만들 수 있습니다. 이 기능을 사용하면 특정 매개 변수로 테스트 대기를 호출 할 때 동작을 정의 할 수 있습니다.
Sinon.js 및 TestDouble.js를 사용하여 스파이 나 스터브를 확인하는 방법은 무엇입니까?
Sinon.js에서는 , 및 와 같은 메소드를 사용하여 스파이 또는 스터브를 확인할 수 있습니다. TestDouble.js에서는 를 사용하여 테스트 대기가 어떤 식 으로든 호출되는지 여부를 주장 할 수 있습니다.
testDouble.js 대신 sinon.js를 사용하는 장점은 무엇입니까?
sinon.js는 testdouble.js와 비교하여보다 포괄적 인 기능 세트를 가지고 있습니다. 여기에는 타이머를 모방하는 유틸리티와 XHR이 포함되어 있으며 특정 유형의 코드를 테스트하는 데 매우 유용합니다. 또한 더 광범위하게 사용되며 더 큰 커뮤니티가 있으므로 더 많은 자원과 지원을 얻을 수 있습니다.
sinon.js 대신 testdouble.js를 사용하는 장점은 무엇입니까?
testdouble.js는 sinon.js보다 간단하고 직관적 인 API를 가지고 있습니다. 사용하기 쉽고 이해하기 쉽도록 설계되었으므로보다 간소화 된 테스트 방법을 선호하는 사람들에게는 훌륭한 선택입니다. 또한 테스트 스탠드를 남용하기 어렵게하여 좋은 테스트 관행을 장려합니다.
다른 테스트 프레임 워크와 함께 sinon.js 및 testdouble.js를 사용할 수 있습니까?
예, Sinon.js 및 TestDouble.js는 모두 매우 깔끔하게 설계되었으며 다른 테스트 프레임 워크와 잘 작동합니다. JavaScript 지원 테스트 프레임 워크와 함께 사용할 수 있습니다.
sinon.js 및 testdouble.js에 대해 더 많이 배우기 위해 어떤 리소스가 있습니까?
예, Sinon.js 및 TestDouble.js는 공식 웹 사이트에 많은 문서가 있습니다. 이러한 라이브러리의 심층적 인 콘텐츠를 다루는 튜토리얼, 블로그 게시물 및 온라인 코스도 많이 있습니다.
위 내용은 JavaScript 테스트 도구 대결 : sinon.js vs testdouble.js의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!