onCall λ° μμ μΈμλ‘ μμ
ν λͺ¨μλ₯Ό μ»μ μ μμ΅λλ€.
μλ μ½λλ Object #<Object> has no method 'withExactArgs'
var mock = sinon.mock();
mock.exactly(2);
mock.onCall(0).withExactArgs("arg1", "arg2").returns("foo");
mock.verify();
withExactArgs
λ©μλλ μ€ν
μμ± mock.onCall(0).stub.withExactArguments
μμ΅λλ€.
μ΄κ²μ μλλ λμμ λκΉ μλλ©΄ λ²κ·Έμ λκΉ?
.stubμμλ μλνμ§ μλ κ² κ°μ΅λλ€. λ©μλκ° μλͺ»λ μΈμλ‘ νΈμΆλμλ€λ μ€λ₯κ° λ°μν©λλ€. 첫 λ²μ§Έ νΈμΆμ μΈμλ₯Ό νμνμ§λ§ λ λ²μ§Έ νΈμΆμ μꡬ μ¬νμ νμν©λλ€. λ§μΉ onCall(0)μ λ²λ¦¬λ κ²μ²λΌ.
var mock = sinon.mock();
mock.exactly(2);
mock.onFirstCall().stub.withExactArgs("bar1", "bar2").returns("bar");
mock.onSecondCall().stub.withExactArgs("foo1", "foo2").returns("foo");
mock("bar1", "bar2");
mock("foo1", "foo2");
mock.verify();
ExpectationError: Anonymous mock received wrong arguments ["bar1", "bar2"], expected ["foo1", "foo2"]
μλλ λμλ λ²κ·Έλ μλλλ€. λΉμ λ₯Ό μκ³ μμ΅λλ€. onCall
λ° withArgs
λ λͺ¨λ λ©μλ νΈμΆμ μλ³νλ λ°©λ²μ
λλ€.
// So either,
mock.onCall(0).returns("foo")
// OR
mock.withArgs("arg1", "arg2").returns("foo")
// but not both
λ λ²μ§Έ μμ λ κ°μ μ΄μ λ‘ κ²°ν¨μ΄ μμΌλ©° μλ§λ μ€ν μ μ¬μ©νμ¬ λ€μ μμ±ν΄μΌ ν©λλ€.
var stub = sinon.stub();
stub.withArgs("bar1", "bar2").returns("bar");
stub.withArgs("foo1", "foo2").returns("foo");
stub("bar1", "bar2");
stub("foo1", "foo2");
sinon.assert.calledTwice(stub);
// verify the 2 calls
sinon.assert.calledWithExactly(stub, "bar1", "bar2");
sinon.assert.calledWithExactly(stub, "foo1", "foo2");
// verify the 2 calls in order
sinon.assert.callOrder(
stub.withArgs("bar1", "bar2"),
stub.withArgs("foo1", "foo2")
);
λΆννλ Stub
μλ withExactArgs
κ° μμ΅λλ€.
νμ§λ§...
λμΌν μΈμλ‘ μ¬λ¬ λ² νΈμΆλ κ²½μ°μλ μ€ν μ λν κ°λ³ νΈμΆμ μλ³ ν μ
stub.withArgs("foo")
.onCall(0).returns("a")
.onCall(1).returns("b");
stub.withArgs("bar")
.onCall(0).returns("c")
.onCall(1).returns("d");
λμμ΄ λλ€λ©΄?
@mantoni μ΄ λ¬Έμ λ λ«μ μ μλ€κ³ μκ°ν©λλ€.
κ°μ₯ μ μ©ν λκΈ
μλλ λμλ λ²κ·Έλ μλλλ€. λΉμ λ₯Ό μκ³ μμ΅λλ€.
onCall
λ°withArgs
λ λͺ¨λ λ©μλ νΈμΆμ μλ³νλ λ°©λ²μ λλ€.λ λ²μ§Έ μμ λ κ°μ μ΄μ λ‘ κ²°ν¨μ΄ μμΌλ©° μλ§λ μ€ν μ μ¬μ©νμ¬ λ€μ μμ±ν΄μΌ ν©λλ€.
λΆννλ
Stub
μλwithExactArgs
κ° μμ΅λλ€.