Potrebbe essere necessario utilizzare un <any>
tipo di affermazione per rendere il tipo largo prima di restringere al vostro tipo specifico:
var myServiceMock: MyStuff.MyService =
<MyStuff.MyService> <any> (sinon.mock(MyStuff.MyService));
Giusto per chiarire un comportamento di Sinon - anche se si passa MyStuff.MyService
, qualunque cosa tu passare al metodo mock
viene utilizzato solo per fornire messaggi di errore migliori.
Se si desidera che la simulazione abbia metodi e proprietà, you need to add them.
Se si desidera falsi creati automaticamente, è possibile afferrare il FakeFactory
da tsUnit, che crea una falsa versione con alcuni valori di default che si può scegliere di ignorare - in JavaScript questa è roba abbastanza facile (più non usando troppo finto funzionalità, è possibile assicurarsi di testare il comportamento piuttosto che l'implementazione).
utilizzo Esempio di FakeFactory
:
var target = tsUnit.FakeFactory.getFake<RealClass>(RealClass);
var result = target.run();
this.areIdentical(undefined, result);
Sì, ho fatto qualcosa di simile a questo. Ho anche appreso che stavo usando l'oggetto sinon in modo errato, non mi ero reso conto che tutto ciò che dovevo fare era usare l'istanza MyService originale nelle chiamate e utilizza i sinon mock/stubs. Quello che hai messo qui sembra corretto per quello che stavo chiedendo in ogni caso, grazie! – Brandon
Sono tornato a questo e sembra che non funzioni. myServiceMock non sembra come se avesse metodi. Qualche idea? – Brandon
Ti è stata data un'aspettativa? 'myServiceMock.expects (" doSomething "). returns (42);' – Fenton