๋ฒ๊ทธ ์ค๋ช
์ฌํํ๊ธฐ ์ํด
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
๊ทธ๋ฌ๋ ์์ฑ์ ๋ฏธ๋ฆฌ ๊ฐ์ ํ ๋นํ๋ฉด ์คํ ์ด ์๋ํฉ๋๋ค. ํ์ง๋ง ๊ฝค ๋ณต์กํ๊ธฐ ๋๋ฌธ์ ์์ฑ์๋ฅผ ํธ์ถํ๊ณ ์ถ์ง ์์ต๋๋ค.
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์ฒ๋ผ ๋ณด์ด์ง ์์ต๋๋ค. ์คํ ๋ฐฉ๋ฒ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
๋ชจ๋ ์ฌ๋์ ์๊ฐ์ ์ ์ฝํ ์ ์๋๋ก ์ ๋ฌธ์ ๋ฅผ ๋ง๋ค๊ณ ํ ํ๋ฆฟ์ ์์ฑํ์ธ์.