Spring junit测试数据预处理器类通过字段访问存储库

busg9geu  于 2022-11-11  发布在  Spring
关注(0)|答案(1)|浏览(121)

我有一个用@Component标注的简单类和注入的存储库,如

@Component
class TestsDataPreparer(
    private val carRepository: CarRepository
) {

fun withCar(builder: Car.() -> Unit = {}): Car {
    return carRepository.save(
        Car(
            name = builder.name!!
        )
    )
}

}

这是清楚的。
但是我想知道这样做是否可以,或者它是否被认为是反模式的。
第一个
因此,问题是,不将存储库注入到测试类本身中,而是从TestsDataPreparer类重用它是否合适

bejyjqdl

bejyjqdl1#

是的,仅仅为了测试can be considered an antipattern而将一个原本私有的字段变成公共的。相反,你可以创建一个CarRepository示例,然后在创建它的时候将它传递给TestsDataPreparer。但是对于单元测试,你实际上并不需要这样做,你可以使用一个mock并验证调用了正确的方法(CarRepository.save)。

相关问题