当前位置: 首页 > 知识库问答 >
问题:

SpringBoot测试错误(无法解析方法'thenReturn(实体))

颜高朗
2023-03-14

你好,我写和销售机票的后端服务,我试图为这个api编写测试。当我试图为AirlineCompanyController类编写createAirlineCompany测试时,我得到了这个错误。

Cannot resolve method 'thenReturn(flight.flightticketapp.entities.AirlineCompany)'

我的测试班:

@Test
    public void testCreateAirlineCompany()
    {
        AirlineCompany airlineCompanyNew = new AirlineCompany();
        airlineCompanyNew.setName("RYANAIR");
        when(airlineCompanyService.createAirlineCompany(airlineCompanyNew.getName())).thenReturn(airlineCompanyNew);
        ResponseEntity<AirlineCompany> airlineCompanyResponseEntity = testRestTemplate.postForEntity
                (ROOT_URL+"/airlinecompany/airlineCreate",airlineCompanyNew,AirlineCompany.class);
        AirlineCompany airline = (AirlineCompany) airlineCompanyResponseEntity.getBody();
        assertNotNull(airlineCompanyResponseEntity.getBody());
        assertEquals(airlineCompanyNew.getName(),airline.getName());

    }
}

还有我的航空公司服务舱:

@Service
public class AirlineCompanyManager implements AirlineCompanyService {
@Override
    public Result createAirlineCompany(String name) {
        return airlineCompanyAbstract.createAirlineCompany(name);
    }
}

我的航空公司Imp课程:

@Component
public class AirlineCompanyImp implements AirlineCompanyAbstract {
  @Override
    public Result createAirlineCompany(String name) {
        AirlineCompany airlineCompany = new AirlineCompany();
        airlineCompany.setName(name);
        add(airlineCompany);
        return new SuccessResult(Messages.airlineCompanyCreated);
    }

@Override
    public Result add(AirlineCompany airlineCompany) {

        airlineCompanyRepository.save(airlineCompany);
        return new SuccessResult(Messages.airlineCompanyAdded);
    }

}

我得到的错误是来自then返回()方法,我不知道如何解决这个问题。谢谢大家。

共有2个答案

姜嘉荣
2023-03-14

您使用的模拟返回值不匹配。当指定模拟时,您返回一个AirlineCompany

 when(airlineCompanyService.createAirlineCompany(airlineCompanyNew.getName())).thenReturn(airlineCompanyNew);

但您的AirlineCompanyService会返回一个结果

public Result createAirlineCompany(String name)

Mockito搜索返回不存在的AirlineCompany-的方法。您必须从模拟中返回结果,例如。

when(airlineCompanyService.createAirlineCompany(airlineCompanyNew.getName())).thenReturn(new Result());

耿联
2023-03-14

确保在()时导入了正确的静态方法

import static org.mockito.Mockito.when;
 类似资料:
  • 我不明白为什么这段带有Java泛型的代码无法编译。给定这个类: 无法模拟getList返回值: 使用“when…then”的唯一方法似乎是完全剥离泛型,代价是编译器警告: 最终,只有这样才能奏效:

  • 我是Scala的新手。我正在编写以下代码,其中一个APIendpoint在文件中缓存值(某某JsonData.toString()),另一个endpoint从该文件中检索(Json.parse())。使用wh-thenEnter编写测试时,会出现重载方法错误。 我哪里做错了? 缓存文件内容: 缓存ontroller.scala CacheControlllerTest.scala

  • 问题内容: 我正在尝试创建一个KeyValueDB类,该类存储用于与SharedPreferences进行交互的方法,但是我在定义该类时遇到了问题。我只希望构造函数执行的操作是使用正确的文件名存储一个sharedPreferences对象,但是我得到的是“无法解析方法’getSharedPreferences(java.lang.String,int)’ 我正在传递一个String和一个int …

  • 我对Android的Gradle构建有问题。我尝试了很多方法来解决这个问题,但没有什么不起作用。我需要帮助。 Gradle版本:4.4 Gradle插件:3.0.1 错误:无法解析app@serverDebug /compileClasspath的依赖关系:无法解析项目:vksdk_library。 错误:无法解析“”的依存关系:app@mockDebugAndroidTest/compileCl

  • 我试图使用Jenkins构建一个maven项目,结果出现了以下错误,整个构建失败了。Maven成功地从GIT中提取代码并进行处理。但POM误差无法纠正。请帮帮我.

  • 同步项目在开始时失败,我无法修复它。错误是gradle无法解析此依赖项。 知道怎么修好它吗?