我在Spring中有以下场景:
public class ClassA{
@Autowired
private ClassB classB;
}
我在我的Test类中使用(自动装配更精确)ClassA
。但我想以某种方式做的只是为我的Junit修改ClassB
,因此,当我的测试类中自动装配ClassA
时,它会加载修改后的ClassB
(而不是原来的。)
有没有办法实现这个目标?
答案 0 :(得分:1)
如果没有Bean配置,不能想到另一种方法。 您可以通过两种方式配置它:
<强>首先强>
<template>
<div class="container">
<div class="row">
<div class="col-md-8 col-md-offset-2">
<div class="panel panel-default">
<div class="panel-body">
<textarea rows="3" class="form-control" v-model="content"></textarea>
<br>
<button class="btn btn-success pull-right" :disabled="not_working" @click="create_post()">
Create a post
</button>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
export default {
mounted() {
},
data() {
return {
content: '',
not_working: true
}
},
methods: {
create_post() {
this.$http.post('/create/post', { content: this.content })
.then((resp) => {
this.content = ''
noty({
type: 'success',
layout: 'bottomLeft',
text: 'Your post has been published !'
})
console.log(resp)
})
}
},
watch: {
content() {
if(this.content.length > 0)
this.not_working = false
else
this.not_working = true
}
}
}
</script>
第二名:(摘自here)
@Configuration
public class AppConfig {
@Bean
public ClassB classB() {
return new ClassB() {
// this is a subclass that inherits everything from ClassB, so override what you want here
}
}
}
最后,您可以在主文件夹中创建一个新界面@RunWith(SpringRunner.class)
@SpringBootTest
public class SomeTest {
// do this if you only want the modified classB in 1 place
@Configuration
static class TestConfig {
@Bean
public ClassB classB () {
return new ClassB() {
// same as the first
}
}
}
@Test
public void testMethod() {
// test
}
}
和ClassB
,并在测试文件夹中创建ClassBImpl
。您仍然需要使用其中一个配置。