2013-05-27 7 views
13

chciałbym mock jakiś płynny interfejs z udawaną, który jest w zasadzie budowniczy mail:W jaki sposób mogę skutecznie kpić z płynnego interfejsu z próbkami Spocka?

this.builder() 
      .from(from) 
      .to(to) 
      .cc(cc) 
      .bcc(bcc) 
      .template(templateId, templateParameter) 
      .send(); 

Kiedy szydząc z tego Spocka, to wymaga wiele konfiguracji takiego:

def builder = Mock(Builder) 
builder.from(_) >> builder 
builder.to(_) >> builder 

itp. Staje się jeszcze bardziej nieporęczna, gdy chcesz przetestować pewne interakcje z próbą, w zależności od przypadku użycia. Więc w zasadzie mam dwa pytania tutaj:

  1. Czy istnieje sposób, aby połączyć makiety zasady, abym mógł zrobić ogólny jedną konfigurację czasową płynny interfejs w sposobie, że mogę ponownie wykorzystać w każdym przypadku testowego, a następnie określić dodatkowe zasady dla każdego przypadku testowego?
  2. Czy istnieje sposób na określenie kpiny z płynnego interfejsu z mniejszym kodem, np. coś takiego:

    def builder = Mock (Builder) builder./(from|to|cc|bcc|template)/(*) >> budowniczy

    lub coś równoważne Mockito Deep Stubs (patrz http://docs.mockito.googlecode.com/hg/org/mockito/Mockito.html#RETURNS_DEEP_STUBS)

Odpowiedz

11

można zrobić coś takiego:

def "stubbing and mocking a builder"() { 
    def builder = Mock(Builder) 
    // could also put this into a setup method 
    builder./from|to|cc|bcc|template|send/(*_) >> builder 

    when: 
    // exercise code that uses builder 

    then: 
    // interactions in then-block override any other interactions 
    // note that you have to repeat the stubbing 
    1 * builder.to("fred") >> builder 
} 
+0

wielki jest ten działa :) Dzięki! Jakieś plany ulepszenia tego, aby nie musieć powtarzać skrótów w tej części? –

+1

Nie mamy żadnych planów na to. Fakt, że stubbing i szyderstwo interakcji występuje razem, jest nieodłączny od sposobu działania szyderczego schematu Spocka. Jest to to samo podejście, które stosuje JMock, EasyMock itp. Tylko Mockito stosuje inne podejście, które ma inne wady. –

+0

Rozumiem, dziękuję za wyjaśnienie tego :) –

Powiązane problemy