Vorrei utilizzare i doppi di prova nei miei test dell'unità coffeescript per aiutare nella separazione delle preoccupazioni.Perché questo Sinon mock ha un metodo deriso che non è una funzione?
Sto usando Sinon con la moka
sto cercando quello che a questo punto sembra uscito da the documentation, che ha questo esempio di utilizzo finta (nel contesto di un'applicazione Rails con 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);
Nel mio caso sto cercando di prendere in giro una chiamata di funzione su un oggetto come segue:
canvas = sinon.mock getContext: (arg) ->
canvas.expects("getContext").once()
canvas.getContext('2d')
canvas.verify()
Questo dà un TypeError
che indica che getContext
non è una funzione:
TypeError: canvas.getContext is not a function
Il simulatore sembra essere configurato e verificato correttamente. Quando omettendo la chiamata a getContext
, mi ha informato che l'aspettativa non è stata soddisfatta:
ExpectationError: Expected getContext([...]) once (never called)
La JavaScript compilato si presenta così, allora:
var canvas;
canvas = sinon.mock({
getContext: function(arg) {}
});
canvas.expects("getContext").once();
canvas.getContext('2d');
canvas.verify();
Cosa potrebbe spiegare questo errore?
Mi chiedevo se stavo facendo qualcosa di strano con l'argomento della funzione, ma posso riprodurre questo senza un argomento per la chiamata getContext
.