我不知道@MockBean
CustomServiceImpl customServiceImpl ;
@Rule
public ExpectedException exceptionRule = ExpectedException.none();
@Test
public void test01_getResultDto() {
exceptionRule.expect(CustomException.class);
UserUtil userUtil = Mockito.mock(UserUtil.class);
Mockito.when(userUtil.getCurrentUser()).thenReturn(null);
customServiceImpl.getResultDto ("type", 1L);
}
在flutter / dart中的放置是否会影响其余代码的执行。例如。创建和部署控制器。
为。例如。
super.function()
如果我在 @override
void foo() {
super.function();
controller.function();
}
之后加上了super.function()
或这些花括号中的任何代码,该代码会变成虫子吗?还是我应该将其放在controller.function()
注意:我已将代码概括化
答案 0 :(得分:2)
问题并不像您想的那么简单,答案取决于您想要实现的目标。
如果要在执行super实现之前覆盖某些内容,则在覆盖要覆盖的内容之后调用super。例如:
class DoTheMathAndPrint {
int first = 1;
int second = 2;
void iWillDoTheMathAndPrint() {
int sum = first + second;
print("The sum is $sum");
}
}
class NoIWillDoTheMath extends DoTheMathAndPrint {
@override
void iWillDoTheMathAndPrint() {
first = 3;
second = 5;
super.iWillDoTheMathAndPrint();
// will print The sum is 8;
}
}
如果您想要常规流程,然后“扩展”该流程,则将首先调用super,然后执行代码。例如:
class WellIHateMath extends DoTheMathAndPrint {
@override
void iWillDoTheMathAndPrint() {
super.iWillDoTheMathAndPrint();
print("I hope it printed $3");
}
}
现在,当我使用框架的子类(Flutter,Android,iOS)时,我通常会做的是,我决定一种方法是“建设性的”还是“破坏性的”。 “建设性”方法将初始化一些代码,配置等(例如initState
)。对于这种方法,我首先要称其为超级方法,我想确保所有内容都由框架设置,然后我才能做我的事情。
对于“破坏性”方法,这种方法用于清理资源,释放内存等,(如dispose()
扑朔迷离),我称之为超级,我释放了资源,然后我可以对框架说:“所有好,做好你的工作。”
在dart中有一件事情,对我来说是一个震惊(因为我读得不够多),是使用mixins时的超级调用。您必须非常小心,super
不会在超类上被调用,它将在mixin上被调用。例如:
class SomeAwesomeState<T extends StatefulWidget> extends State<T> {
List<SomeBigObject> _theList = ...smething big;
@override
void dispose() {
_theList.clear();
super.dispose();
}
}
class MyStateWithAnimation extends SomeAwesomeState<AnimationWidget> with SingleTickerProviderStateMixin {
// some awesome animations here
@override
void dispose() {
//remove whatever here
super.dispose(); => this will be the super on the SingleTickerProviderStateMixin not on the SomeAwesomeState
}
}