我正在尝试测试Spring Boot应用程序,其中包括保存到cassandra DB中。 对于单元测试,我使用了EmbeddedCassandra。
这些是依赖项。
@RunWith(SpringRunner.class)
@WebMvcTest(value = MyController.class)
@Import(value = {MyDao.class})
@ContextConfiguration
@TestExecutionListeners(listeners = {
CassandraUnitDependencyInjectionTestExecutionListener.class,
CassandraUnitTestExecutionListener.class,
ServletTestExecutionListener.class,
DependencyInjectionTestExecutionListener.class,
DirtiesContextTestExecutionListener.class}
)
@EmbeddedCassandra(timeout = 60000)
@CassandraDataSet(keyspace = "test", value = {"test.cql"})
这些是我使用的注释
var myObj = {
myKey: 0
}
var obj1 = {
myKey: 0
}
var obj2 = {
myKey: 0
}
var array = [{
obj: obj1,
key: 'myKey1',
value: 1
}, {
obj: obj2,
key: 'myKey2',
value: 2
}]
function changeRule(obj, key, value, array) {
if (array! == undefined && Array.isArray(array)) {
// rest of the code to change the object properties
return;
}
obj[key] = value
},
changeRule(myObj, 'myKey', 1, array)
但是在单元测试中保存的值将填充原始cassandra db。 谁能帮助我解决这个问题?
答案 0 :(得分:0)
Cassandra单位使用: native_transport_port:9142,但是Spring Boot需要9042端口,因此您应该在配置中更改端口或使用cassandra.yaml文件。 作为替代方案,您可以看一下以下内容:
https://github.com/nosan/embedded-cassandra/blob/master/README.adoc#spring-boot
它还提供@Cql批注,以在每次测试之前或之后执行cql脚本。
希望,对您有用。