2017-09-06 3 views
0

Ich weiß, wie eine Klasse zu verspotten, die keine KonstruktorparameterWie verwenden Sie scalamock eine Klasse mit Konstruktorparameter zu verspotten

zB hat, myMock = mock[MockClass]

Aber was tun Sie, wenn die Klasse Konstruktor Parameter?

Insbesondere Ich versuche, die finatra Klasse zu verspotten: ResponseBuilder

https://github.com/ImLiar/finatra/blob/master/src/main/scala/com/twitter/finatra/ResponseBuilder.scala

+1

(1) 'ResponseBuilder' nimmt nicht Konstruktorparameter. (2) Wenn dies der Fall ist, könnten Sie es immer noch als 'mock [ResponseBuilder]' verhöhnen, die Konstruktorparameter sind nicht wichtig, (3) es ist fast nie eine gute Idee, Builder zu verspotten – Dima

+0

Verspottungsklassen mit nicht standardmäßigen Konstruktoren (z , mit Parametern) wird in der neuesten Version von ScalaMock unterstützt. –

Antwort

1

ich nicht die Testklasse auf Github jedoch die Antwort auf diese Frage hängt davon ab, finden konnte, was Sie erreichen wollen. Sie würden nicht eine Klasse verspotten, aber mit specs2 und mockito können Sie es ausspionieren, um festzustellen, ob etwas passiert ist, dies ist ein Beispiel für das, was Sie versuchen könnten zu erreichen.

class Responsebuilder(param1: Int, param2: int) { 
    def doSomething() { doSomethingElse() } 
    def doSomethingElse() { ... 
} 

class ResponseBuilderSpec extends Specification with Mockito { 
    "response builder" should { 
     "respond" in { 
      val testClass = spy(new ResponseBuilder(1, 3)) 
      testClass.doSomething() 

      there was one(testClass).doSomethingElse() 
     } 
    } 
} 

Man würde normalerweise Mock Züge als Abhängigkeiten und sie dann in die Testklasse injizieren, sobald Sie ihr Verhalten definiert

trait ResponseBuilderConfig { def configurationValue: String } 

class Responsebuilder(val config: ResponseBuilderConfig, param2: int) { 
    def doSomething() { doSomethingElse(config.configurationValue) } 
    def doSomethingElse(param: String) { ... 
} 

class ResponseBuilderSpec extends Specification with Mockito { 
    "response builder" should { 
     "respond" in { 
      val mockConfig = mock[ResponseBuilderConfig] 
      mockConfig.configurationValue returns "Test" 
      val testClass = spy(new ResponseBuilder(mockConfig, 3)) 
      testClass.doSomething() 

      there was one(testClass).doSomethingElse("Test") 
     } 
    } 
} 
Verwandte Themen