Chciałbym użyć testu podwójnego w moich testach jednostkowych coffeescript, aby pomóc w rozdzieleniu obaw.Dlaczego ta sztuczka z Sinon ma wyśmiewaną metodę, która nie jest funkcją?
Używam sinon z mocha
Staram co w tym momencie wydaje się wprost z the documentation, który ma ten przykład makiety użytkowania (w kontekście aplikacji Rails z konacha.):
var myAPI = { method: function() {} };
var spy = sinon.spy();
var mock = sinon.mock(myAPI);
mock.expects("method").once().throws();
PubSub.subscribe("message", myAPI.method);
PubSub.subscribe("message", spy);
PubSub.publishSync("message", undefined);
mock.verify();
assert(spy.calledOnce);
W moim przypadku Próbuję mock wywołanie funkcji na obiekcie, co następuje:
canvas = sinon.mock getContext: (arg) ->
canvas.expects("getContext").once()
canvas.getContext('2d')
canvas.verify()
daje to TypeError
wskazując, że getContext
nie jest funkcją:
TypeError: canvas.getContext is not a function
Egzamin wygląda na prawidłowo skonfigurowany i zweryfikowany. Kiedy pomijając wezwanie do getContext
, jestem poinformowany, że oczekiwanie nie zostało spełnione:
ExpectationError: Expected getContext([...]) once (never called)
Skompilowany JavaScript wygląda tak, a następnie:
var canvas;
canvas = sinon.mock({
getContext: function(arg) {}
});
canvas.expects("getContext").once();
canvas.getContext('2d');
canvas.verify();
Co może stanowić tego błędu?
Zastanawiam się, czy robiłem coś dziwnego z argumentem funkcji, ale mogę odtworzyć to bez argumentów do wywołania getContext
.