모든 스파이, 스터브, 모의 및 가짜를위한 블랙 박스 컨테이너 역할을하는 샌드 박스를 만듭니다.
첫 번째 설명 블록에 샌드 박스를 작성하기 만하면 모든 테스트 케이스에서 액세스 할 수 있습니다. 그리고 모든 테스트 사례가 완료되면 원래 메소드를 해제 sandbox.restore()
하고 afterEach 후크 의 메소드 를 사용하여 스텁을 정리하여 런타임시 보류 된 자원 afterEach
테스트 케이스가 통과 또는 실패 하도록 릴리스해야합니다 .
예를 들면 다음과 같습니다.
describe('MyController', () => {
//Creates a new sandbox object
const sandbox = sinon.createSandbox();
let myControllerInstance: MyController;
let loginStub: sinon.SinonStub;
beforeEach(async () => {
let config = {key: 'value'};
myControllerInstance = new MyController(config);
loginStub = sandbox.stub(ThirdPartyModule, 'login').resolves({success: true});
});
describe('MyControllerMethod1', () => {
it('should run successfully', async () => {
loginStub.withArgs({username: 'Test', password: 'Test'}).resolves();
let ret = await myControllerInstance.run();
expect(ret.status).to.eq('200');
expect(loginStub.called).to.be.true;
});
});
afterEach(async () => {
//clean and release the original methods afterEach test case at runtime
sandbox.restore();
});
});