Tüm casuslarınız, taslaklarınız, alaycılarınız ve taklitleriniz için bir kara kutu konteyneri görevi görecek bir sanal alan oluşturun.
Yapmanız gereken tek şey, ilk test bloğunda bir sandbox oluşturmaktır, böylece tüm test senaryolarında erişilebilir. Ve tüm test sandbox.restore()
senaryolarını bitirdikten sonra, orijinal yöntemleri serbest bırakmalı ve afterEach kancasındaki yöntemi kullanarak saplamaları temizlemelisiniz, böylece çalışma zamanında tutulan kaynakları serbest bırakırafterEach
test geçmesi veya başarısız olması.
İşte bir örnek:
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();
});
});