当尝试模拟rabbitmq ConnectionFactory时,Mockito在/然后返回时始终在Scala Test中返回null

时间:2011-12-28 19:34:11

标签: scala rabbitmq mockito scalatest

我试图使用scalatest和mockito模拟RabbitMQ ConnectionFactory对象以返回模拟连接。以下是我正在使用的示例测试:

class RabbitMQMockTest extends FunSuite with MockitoSugar {
    test("RabbitMQ ConnectionFactory is correctly mocked") {
        def connectionFactory = mock[ConnectionFactory]
        def connection = mock[Connection]

        when(connectionFactory.newConnection()).thenReturn(connection)
        println(connectionFactory.newConnection())

        assert(connectionFactory.newConnection() != null)
    }
}

这总是失败,println语句总是打印" null"。我一起使用这些技术非常新,并且想知道是否有人有任何建议或者如果我做错了什么我可以告诉我。提前谢谢!

2 个答案:

答案 0 :(得分:5)

不要使用'def'意外定义变量!我使用'def'而不是'val'或'var'来定义模拟,所以我创建了一个每次都返回一个新模拟的方法,而不是变量。

答案 1 :(得分:0)

我认为你应该在connection mock上定义一个行为才能使用它。例如:

when(connection.createChannel()).thenReturn(new Channel {...})

或类似的东西。