我有一堂课,看起来像这样:
public class Foo {
SomeObj dummy;
...
public Bar makeBar(){
if(dummy == null) {
...do stuff
}
return new Bar(dummy);
}
}
我正在尝试对if语句的内容进行单元测试,以确保我的代码正在执行所需的操作。
现在,我的单元测试看起来像这样:
public class FooTest {
@InjectMocks
Foo foo;
@Mock
SomeObj dummy;
@Before
public void setUp() throws Exception
{
foo = new Foo();
MockitoAnnotations.initMocks(this);
}
...
@Test
public void testMakeBar()
{
when(dummy.equals(null)).thenReturn(true);
...
foo.makeBar();
}
}
当然,这不起作用,这就是为什么我在这里。简而言之,我该如何模拟==
运算符?
旁注:抱歉,这是一个愚蠢的问题或简单的解决方法。当尝试使用谷歌浏览器时,我得到了很多“注入的模拟为空”,这实际上是我的问题的对立面。
答案 0 :(得分:0)
我怀疑您是在想太多事情。只需停止模拟module.exports = {
plugins: [
[require("@babel/plugin-proposal-class-properties"), { loose: false }]
],
presets: ["@babel/preset-env", "@babel/preset-react"]
};
或停止向dummy
注入模拟,您将获得一个Foo
Foo
的{{1}}实例(因为它从未被初始化) )。
答案 1 :(得分:0)
如果这和这里的示例一样简单,则可以在junit中创建一个新的Foo(即实际的新Foo()实例化)并运行它。
如果按照我的想象,如果要通过其他依赖项来进行测试要复杂得多,可以使用@InjectMocks创建一个新的Foo,然后在junit或设置中手动将SomeObj设置为空值。这样,您就不必为可能在其他测试中使用的另一个Foo对象带来麻烦。