Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 调用服务方法时的模拟_Java_Testing_Junit_Mocking_Mockito - Fatal编程技术网

Java 调用服务方法时的模拟

Java 调用服务方法时的模拟,java,testing,junit,mocking,mockito,Java,Testing,Junit,Mocking,Mockito,我有一个SpringBoot应用程序,在那里我有一些测试。我有一个Junit测试: 以及测试: public class FindHotelDataRequestTransformerTest { @Autowired private BackendHotelService backendHotelService; private FindHotelDataRequestTransformer tran

我有一个SpringBoot应用程序,在那里我有一些测试。我有一个Junit测试:

以及测试:

        public class FindHotelDataRequestTransformerTest {


            @Autowired
            private BackendHotelService backendHotelService;

            private FindHotelDataRequestTransformer transformer;

            @Before
            public void setUp() {
                transformer = new FindHotelDataRequestTransformer( backendHotelService);
            }

        @Test
        public void theTest() {
            mock(BackendHotelService.class);
when(transformer.getHotelApplicationName()).thenReturn("NameMocked");
...

        }
    }
这是基于这些类的:

public abstract class HotelDataRequestTransformer {



    private final BackendCredentialsService backendCredentialsService;

    public HotelDataRequestTransformer(BackendCredentialsService backendCredentialsService) {
        this.backendCredentialsService = backendCredentialsService;
    }

    public String getHotelApplicationName() {
        return backendCredentialsService.getHotelApplicationName();
    }


}




    @Component
    public class FindHotelDataRequestTransformer extends HotelDataRequestTransformer {


        public FindHotelDataRequestTransformer(BackendHotelService backendHotelService) {
            super (backendHotelService);
        }
    ..
    }
但是当我运行测试时,我得到了一个空指针

return backendCredentialsService.getHotelApplicationName();

因此,Mocking.when不起作用似乎是从mock本身返回的,而不是从被测试的类返回的

backendHotelService = mock(BackendHotelService.class); // also use the mock created :)
when(backendHotelService.getHotelApplicationName()).thenReturn("NameMocked");

从模拟本身返回,而不是从被测试的类返回

backendHotelService = mock(BackendHotelService.class); // also use the mock created :)
when(backendHotelService.getHotelApplicationName()).thenReturn("NameMocked");

transformer不是模拟对象—您正在创建新的transformer

backendHotelService是模拟对象

尝试:
when(backendHotelService.getHotelApplicationName())。然后返回(“NameMocked”)

transformer不是模拟对象—您正在创建一个新的transformer

backendHotelService是模拟对象

尝试:
when(backendHotelService.getHotelApplicationName())。然后返回(“NameMocked”)

您需要模拟调用该对象的任何方法的结果,否则mockito将不知道返回什么。因此,您需要一个
when(mockedObject.getterMethod())。然后返回()
语句以继续超过该点。您需要模拟调用该对象的任何方法的结果,否则mockito将不知道返回什么。因此,您需要一个
when(mockedObject.getterMethod())。然后使用return()
语句继续超过该点。