Mi piacerebbe prendere in giro un po 'interfaccia fluida con finto, che è fondamentalmente un costruttore mail:Come posso prendere in giro in modo efficiente un'interfaccia fluida con Spock Mock?
this.builder()
.from(from)
.to(to)
.cc(cc)
.bcc(bcc)
.template(templateId, templateParameter)
.send();
Quando beffardo questo con Spock, questo ha bisogno di un sacco di configurazione come questa:
def builder = Mock(Builder)
builder.from(_) >> builder
builder.to(_) >> builder
ecc. Diventa ancora più complicato quando si vogliono testare determinate interazioni con la simulazione, a seconda del caso d'uso. Così ho praticamente avuto due domande qui:
- c'è un modo per unire le regole finta, in modo da poter fare un generale una configurazione iniziale dell'interfaccia fluente in un metodo che posso riutilizzare su ogni banco di prova e poi specificare regole aggiuntive per test-case?
C'è un modo per specificare il mocking di un'interfaccia fluente con meno codice, ad es. qualcosa di simile:
costruttore def = Mock (Builder) builder./(from|to|cc|bcc|template)/(*) >> builder
o qualcosa di equivalente a di Mockito profonda Stub (vedi http://docs.mockito.googlecode.com/hg/org/mockito/Mockito.html#RETURNS_DEEP_STUBS)
Grande questo sta lavorando :) Grazie! Qualche piano per migliorare questo in modo da non dover ripetere lo stub nell'allora-parte? –
Non abbiamo piani per questo. Il fatto che lo stub e il deridere di un'interazione avvengano insieme è inerente al modo in cui funziona il sistema di derisione di Spock. È lo stesso approccio usato da JMock, EasyMock, ecc. Solo Mockito usa un approccio diverso, che ha altri svantaggi. –
Vedo, grazie per aver chiarito questo :) –