1

我正在尝试使用 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”。我对一起使用这些技术非常陌生,想知道是否有人有任何建议或可以让我知道我是否做错了什么。提前致谢!

4

2 回答 2

5

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

于 2012-01-03T15:45:27.537 回答
0

我认为您应该先在模拟上定义一个行为,connection然后才能使用它。例如 :

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

或类似的东西。

于 2011-12-30T14:49:35.473 回答