<?php if(isset($_SESSION['flash'])): ?>
<?php foreach ($_SESSION['flash'] as $type => $message): ?>
<div class="alert alert-<?= $type; ?>">
<?= $message; ?>
</div>
<?php enforeach; ?>
<?php unset($_SESSION['flash']); ?>
<?php endif; ?>
单元测试类:
public class top {
publiv top() {
bottom b = new bottom("value");
}
}
在测试中为顶级类创建对象时,它将为底层类创建一个对象。
在这里,我想模拟底层对象的创建。任何人都可以帮我解决这个问题。
答案 0 :(得分:0)
为此,您应该考虑将底部对象作为参数传递。当对象依赖于该对象时,将对象作为参数传递始终是一种好习惯。
public class Top {
private Bottom bottom;
public Top(Bottom bottom) {
this.bottom = bottom
}
}
public class TopTest {
@Test
public void test(){
Bottom bottom = mock(Bottom.class);
Top top = new Top(bottom);
}
}
答案 1 :(得分:0)
您需要移动逻辑创建底部实例。要么采用可重写的方法,例如:
public class top {
public top() {
bottom b = new bottom("value");
}
protected bottom createBottom() {
return new bottom("value");
}
}
然后你可以在测试中覆盖它:
public class topTest {
@Test
public void test(){
top a = new top() {
protected bottom createBottom() {
return Mockito.mock(bottom.class);
}
};
}
}
或者您创建一个BottomCreator类,在构建时将其传递给Top,并在测试时使用模拟/假冒版本。
public class top {
private final BottomCreator bottomCreator;
public top(BottomCreator creator) {
this.bottomCreator = creator;
}
public top() {
bottom b = bottomCreator.newBottom();
}
}