mirror of
https://github.com/corda/corda.git
synced 2025-05-02 08:43:15 +00:00
Make rigorousMock callRealMethod by default for concrete methods. (#2159)
This commit is contained in:
parent
10e686bc82
commit
15f677a2fb
@ -12,9 +12,7 @@ import net.corda.core.identity.CordaX500Name
|
|||||||
import net.corda.core.identity.Party
|
import net.corda.core.identity.Party
|
||||||
import net.corda.core.node.NodeInfo
|
import net.corda.core.node.NodeInfo
|
||||||
import net.corda.core.node.ServiceHub
|
import net.corda.core.node.ServiceHub
|
||||||
import net.corda.core.node.StatesToRecord
|
|
||||||
import net.corda.core.serialization.SingletonSerializeAsToken
|
import net.corda.core.serialization.SingletonSerializeAsToken
|
||||||
import net.corda.core.transactions.SignedTransaction
|
|
||||||
import net.corda.core.transactions.TransactionBuilder
|
import net.corda.core.transactions.TransactionBuilder
|
||||||
import net.corda.core.utilities.days
|
import net.corda.core.utilities.days
|
||||||
import net.corda.node.internal.FlowStarterImpl
|
import net.corda.node.internal.FlowStarterImpl
|
||||||
@ -44,7 +42,6 @@ import org.junit.Before
|
|||||||
import org.junit.Rule
|
import org.junit.Rule
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
import java.nio.file.Paths
|
import java.nio.file.Paths
|
||||||
import java.security.PublicKey
|
|
||||||
import java.time.Clock
|
import java.time.Clock
|
||||||
import java.time.Instant
|
import java.time.Instant
|
||||||
import java.util.concurrent.CountDownLatch
|
import java.util.concurrent.CountDownLatch
|
||||||
@ -105,13 +102,9 @@ class NodeSchedulerServiceTest : SingletonSerializeAsToken() {
|
|||||||
doReturn(MonitoringService(MetricRegistry())).whenever(it).monitoringService
|
doReturn(MonitoringService(MetricRegistry())).whenever(it).monitoringService
|
||||||
doReturn(validatedTransactions).whenever(it).validatedTransactions
|
doReturn(validatedTransactions).whenever(it).validatedTransactions
|
||||||
doReturn(NetworkMapCacheImpl(MockNetworkMapCache(database), identityService)).whenever(it).networkMapCache
|
doReturn(NetworkMapCacheImpl(MockNetworkMapCache(database), identityService)).whenever(it).networkMapCache
|
||||||
doCallRealMethod().whenever(it).signInitialTransaction(any(), any<PublicKey>())
|
|
||||||
doReturn(myInfo).whenever(it).myInfo
|
doReturn(myInfo).whenever(it).myInfo
|
||||||
doReturn(kms).whenever(it).keyManagementService
|
doReturn(kms).whenever(it).keyManagementService
|
||||||
doReturn(CordappProviderImpl(CordappLoader.createWithTestPackages(listOf("net.corda.testing.contracts")), MockAttachmentStorage())).whenever(it).cordappProvider
|
doReturn(CordappProviderImpl(CordappLoader.createWithTestPackages(listOf("net.corda.testing.contracts")), MockAttachmentStorage())).whenever(it).cordappProvider
|
||||||
doCallRealMethod().whenever(it).recordTransactions(any<StatesToRecord>(), any())
|
|
||||||
doCallRealMethod().whenever(it).recordTransactions(any<Iterable<SignedTransaction>>())
|
|
||||||
doCallRealMethod().whenever(it).recordTransactions(any<SignedTransaction>(), anyVararg())
|
|
||||||
doReturn(NodeVaultService(testClock, kms, stateLoader, database.hibernateConfig)).whenever(it).vaultService
|
doReturn(NodeVaultService(testClock, kms, stateLoader, database.hibernateConfig)).whenever(it).vaultService
|
||||||
doReturn(this@NodeSchedulerServiceTest).whenever(it).testReference
|
doReturn(this@NodeSchedulerServiceTest).whenever(it).testReference
|
||||||
|
|
||||||
|
@ -2,7 +2,6 @@
|
|||||||
|
|
||||||
package net.corda.testing
|
package net.corda.testing
|
||||||
|
|
||||||
import com.nhaarman.mockito_kotlin.doCallRealMethod
|
|
||||||
import com.nhaarman.mockito_kotlin.doReturn
|
import com.nhaarman.mockito_kotlin.doReturn
|
||||||
import com.nhaarman.mockito_kotlin.whenever
|
import com.nhaarman.mockito_kotlin.whenever
|
||||||
import net.corda.core.context.Actor
|
import net.corda.core.context.Actor
|
||||||
@ -74,10 +73,6 @@ fun testNodeConfiguration(
|
|||||||
doReturn(5).whenever(it).messageRedeliveryDelaySeconds
|
doReturn(5).whenever(it).messageRedeliveryDelaySeconds
|
||||||
doReturn(5.seconds.toMillis()).whenever(it).additionalNodeInfoPollingFrequencyMsec
|
doReturn(5.seconds.toMillis()).whenever(it).additionalNodeInfoPollingFrequencyMsec
|
||||||
doReturn(null).whenever(it).devModeOptions
|
doReturn(null).whenever(it).devModeOptions
|
||||||
doCallRealMethod().whenever(it).certificatesDirectory
|
|
||||||
doCallRealMethod().whenever(it).trustStoreFile
|
|
||||||
doCallRealMethod().whenever(it).sslKeystore
|
|
||||||
doCallRealMethod().whenever(it).nodeKeystore
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -24,6 +24,7 @@ import net.corda.nodeapi.internal.crypto.X509Utilities
|
|||||||
import net.corda.nodeapi.internal.serialization.amqp.AMQP_ENABLED
|
import net.corda.nodeapi.internal.serialization.amqp.AMQP_ENABLED
|
||||||
import org.mockito.Mockito.mock
|
import org.mockito.Mockito.mock
|
||||||
import org.mockito.internal.stubbing.answers.ThrowsException
|
import org.mockito.internal.stubbing.answers.ThrowsException
|
||||||
|
import java.lang.reflect.Modifier
|
||||||
import java.nio.file.Files
|
import java.nio.file.Files
|
||||||
import java.security.KeyPair
|
import java.security.KeyPair
|
||||||
import java.security.PublicKey
|
import java.security.PublicKey
|
||||||
@ -180,11 +181,16 @@ class UndefinedMockBehaviorException(message: String) : RuntimeException(message
|
|||||||
|
|
||||||
inline fun <reified T : Any> rigorousMock() = rigorousMock(T::class.java)
|
inline fun <reified T : Any> rigorousMock() = rigorousMock(T::class.java)
|
||||||
/**
|
/**
|
||||||
* Create a Mockito mock that has [UndefinedMockBehaviorException] as the default behaviour of all methods.
|
* Create a Mockito mock that has [UndefinedMockBehaviorException] as the default behaviour of all abstract methods,
|
||||||
* @param T the type to mock. Note if you want to use [com.nhaarman.mockito_kotlin.doCallRealMethod] on a Kotlin interface,
|
* and [org.mockito.invocation.InvocationOnMock.callRealMethod] as the default for all concrete methods.
|
||||||
|
* @param T the type to mock. Note if you want concrete methods of a Kotlin interface to be invoked,
|
||||||
* it won't work unless you mock a (trivial) abstract implementation of that interface instead.
|
* it won't work unless you mock a (trivial) abstract implementation of that interface instead.
|
||||||
*/
|
*/
|
||||||
fun <T> rigorousMock(clazz: Class<T>): T = mock(clazz) {
|
fun <T> rigorousMock(clazz: Class<T>): T = mock(clazz) {
|
||||||
// Use ThrowsException to hack the stack trace, and lazily so we can customise the message:
|
if (Modifier.isAbstract(it.method.modifiers)) {
|
||||||
ThrowsException(UndefinedMockBehaviorException("Please specify what should happen when '${it.method}' is called, or don't call it. Args: ${Arrays.toString(it.arguments)}")).answer(it)
|
// Use ThrowsException to hack the stack trace, and lazily so we can customise the message:
|
||||||
|
ThrowsException(UndefinedMockBehaviorException("Please specify what should happen when '${it.method}' is called, or don't call it. Args: ${Arrays.toString(it.arguments)}")).answer(it)
|
||||||
|
} else {
|
||||||
|
it.callRealMethod()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user