mot*_*sch 7 unit-testing scala mocking scalatest
我正在使用ScalaTest 2.0和ScalaMock 3.0.1.我怎么断言从未调用过模拟特征的方法?
import org.scalatest._
import org.scalamock._
import org.scalamock.scalatest.MockFactory
class TestSpec extends FlatSpec with MockFactory with Matchers {
"..." should "do nothing if getting empty array" in {
val buyStrategy = mock[buystrategy.BuyStrategyTrait]
buyStrategy expects 'buy never
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
使用ScalaMock有两种样式; 我将向您展示一个解决方案,显示基于Mockito的Record-Then-Verify样式.假设你有Foo如下特点:
trait Foo{
def bar(s:String):String
}
Run Code Online (Sandbox Code Playgroud)
然后是一个使用该特征实例的类:
class FooController(foo:Foo){
def doFoo(s:String, b:Boolean) = {
if (b) foo.bar(s)
}
}
Run Code Online (Sandbox Code Playgroud)
如果我想验证给出帕拉姆假值b,foo.bar不叫,我可以设置像这样:
val foo = stub[Foo]
val controller = new FooController(foo)
controller.doFoo("hello", false)
(foo.bar _).verify(*).never
Run Code Online (Sandbox Code Playgroud)
使用*,我说bar没有任何可能的字符串输入调用.但是,您可以通过使用您指定的确切输入来获得更具体的信息:
(foo.bar _).verify("hello").never
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4322 次 |
| 最近记录: |