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

使用Spring WebFlux和Controller进行失败测试

柳俊逸
2023-03-14

我打算使用Spring WebFlux为Spring控制器编写一个单元测试。以下是控制器:

@Controller
public class MyController {

    private Service service;

    public MyController (Service service) {
        this.service=service;
    }

    @GetMapping({"", "/", "/index"})
    public String createChain(Model model) {
        model.addAttribute("blockchain", service.getString());

        return "index";
    }

}

这是底层服务接口:

public interface Service{

    Mono<String> getString();

}
@RunWith(SpringRunner.class)
@WebFluxTest(MyController.class)
public class MyControllerTest {

    @Autowired
    private WebTestClient webTestClient;

    @MockBean
    private Service service;

    @Test
    public void getAString() {

        BDDMockito.given(service.getString()).willReturn(Mono.just("A string."));

        this.webTestClient.get().uri("/").exchange()
                .expectStatus().isOk();

    }
}

我不明白怎么了。名为index.html的模板位于src/main/resources/templates/index.html下。

谢谢大家的支持!

共有1个答案

冯霖
2023-03-14

WebFluxTest:使用此注释将禁用完全的自动配置,而只应用与WebFlux测试相关的配置(即@Controller、@ControllerAdvice、@JSONComponent、Converter/GenericConverter和WebFluxConfigureer bean,而不应用@Component、@Service或@Repository beans)。

如果您希望加载完整的应用程序配置并使用WebTestClient,则应该考虑@SpringBootTest与@AutoConfigureWebTestClient组合使用,而不是使用此注释。

WebFluxTest文档


@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureWebTestClient
public class MyControllerTest {

    @Autowired
    private WebTestClient webTestClient;

    @MockBean
    private Service service;

    @Test
    public void getAString() {

        BDDMockito.given(service.getString()).willReturn(Mono.just("A string."));

        this.webTestClient.get().uri("/").exchange()
                .expectStatus().isOk();

    }
}
 类似资料:
  • 我花了相当长的时间试图找出解决我问题的办法,但毫无结果。 无论如何,我有一堆集成测试(在一个与标准测试目录并行的非标准目录testRegression中)。 这些集成测试使用内存数据库中的h2。在生产和测试中,我使用liquibase来模拟模式演变。 我的属性(在应用程序testregion.properties中)如下所示: 我一直得到的错误是: 那么我该如何回避这个问题呢?我的基本理解是,每个

  • 测试解决方案有两个项目——一个测试项目带有测试方法(它继承自一个基类,该基类详细编写了测试步骤),另一个项目是一个类库项目,其中包含常用的方法和测试。 使用此解决方案来测试数据输入页。 问题 当我使用Selenium Grid并行执行测试时,所有测试都会失败——它会打开Chrome浏览器,然后什么都没有。 测试报告说服务器超时了。 当我按顺序运行测试时,它们都通过了(没有Selenium网格)。

  • 我们已经为spark编写了单元测试,在本地模式下有4个线程。 当一个接一个地启动时,例如通过intellij或sbt testOnly,每个测试都运行良好。 当用sbt测试启动时,它们会出现如下错误 我们使用的是一个带有多个子项目的sbt项目,其定义如下:

  • 我在这里看到了:在Maven/Surefire中,什么是清理单元测试后的好方法,无论测试是否通过?但这帮不了我。我可能错误地配置了failsafe和/或surefire。 我已经将jUnit声明为依赖项 我在构建中有故障安全插件: 我没有任何遵循*IT命名约定的集成测试,只有遵循*Test命名约定的jUnit测试。我只是试图使用故障安全作为一种方法来确保我的清理完成。我试过船长是真的,我试过评论这

  • 在使用maven运行单元测试时,我遇到了这个异常。我的所有测试都没有执行。我的测试类的格式是 我正在运行以下命令来运行此命令: 使用的surefire插件是: 有人知道为什么我的测试没有执行吗?我用的是jUnit 4.8.2和surefire 2.14.1

  • 我使用NestJS框架和typeorm。使用数据库时,所有数据都会成功保存。连接没有问题。我尝试用Jest配置e2e测试。不幸的是,我有两个错误: 和 找不到“用户”的存储库。看起来此实体未在当前“默认”连接中注册? 我试图使用本教程设置测试环境。 我的文件: 应用程序。e2e-spec.ts 应用程序。单元ts user.e2e-spec.ts user.module.ts config.mod