Sinon: ์Šคํ… ์ฝ๊ธฐ ์ „์šฉ ์†์„ฑ throw "์กด์žฌํ•˜์ง€ ์•Š๋Š” ์†์„ฑ์„ ์Šคํ…ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค"

์— ๋งŒ๋“  2020๋…„ 06์›” 05์ผ  ยท  3์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: sinonjs/sinon

๋ฒ„๊ทธ ์„ค๋ช…

  • ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฒ„์ „: 9.0.2

์žฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด

import * as sinon from "sinon";
class B {
    public readonly a: string;
    public get(): void {}
}

const bStub = sinon.createStubInstance(B);
sinon.stub(bStub , "a").value("test");

// let b = new B();
// sinon.stub(b, "a").value("test");

์˜ˆ์ƒ๋˜๋Š” ํ–‰๋™
์ œ๋Œ€๋กœ ์Šคํ….

๋™์ผํ•œ ๋ฌธ์ œ๋ฅผ ์–ธ๊ธ‰ํ•˜๋Š” ์˜ค๋ž˜๋œ ๋ฌธ์ œ๊ฐ€ ์žˆ์ง€๋งŒ ๋‚˜์—๊ฒŒ ๋ณ„๋กœ ๋„์›€์ด ๋˜์ง€ ์•Š๋Š” ๋Œ“๊ธ€๋กœ ๋งˆ๊ฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. https://github.com/sinonjs/sinon/issues/829

๋ชจ๋“  3 ๋Œ“๊ธ€

๊ทธ๋Ÿฌ๋‚˜ ์†์„ฑ์— ๋ฏธ๋ฆฌ ๊ฐ’์„ ํ• ๋‹นํ•˜๋ฉด ์Šคํ…์ด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ฝค ๋ณต์žกํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•˜๊ณ  ์‹ถ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

import * as sinon from "sinon";

class B {
    public readonly a: string;
    public get(): void {}
    constructor(aa: string) {
        this.a = aa;
    }
}

// const bStub = sinon.createStubInstance(B);
let b = new B("t");
sinon.stub(b, "a").value("test");
console.log(b.a);

์ถœ๋ ฅ: ํ…Œ์ŠคํŠธ

ํ˜„์žฌ ์Šคํ… ๊ฐœ์ฒด์— ์ง์ ‘ ํ• ๋‹นํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

import * as sinon from "sinon";

class B {
    public readonly a: string;
    public get(): void {}
    constructor(aa: string) {
        this.a = aa;
    }
}

const bStub = sinon.createStubInstance(B);
(bStub as any).a = "test";
console.log(b.a);

์ถœ๋ ฅ: ํ…Œ์ŠคํŠธ

์šฐ๋ฆฌ๋Š” ์กด์žฌํ•˜์ง€ ์•Š๋Š” ์†์„ฑ์˜ ์Šคํ…์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๊ธฐ๋กœ ์˜์‹์ ์ธ ๊ฒฐ์ •์„ ๋‚ด๋ ธ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ํ•˜๋ฉด ๋งค์šฐ ํ˜ผ๋ž€์Šค๋Ÿฌ์šด ์‹œ๋‚˜๋ฆฌ์˜ค๊ฐ€ ๋  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์ œ์ถœ๋œ ์ฝ”๋“œ๊ฐ€ JavaScript์ฒ˜๋Ÿผ ๋ณด์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์‹คํ–‰ ๋ฐฉ๋ฒ•์„ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  ์‚ฌ๋žŒ์˜ ์‹œ๊ฐ„์„ ์ ˆ์•ฝํ•  ์ˆ˜ ์žˆ๋„๋ก ์ƒˆ ๋ฌธ์ œ๋ฅผ ๋งŒ๋“ค๊ณ  ํ…œํ”Œ๋ฆฟ์„ ์ž‘์„ฑํ•˜์„ธ์š”.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰