@WebMvcTest可以有两个控制器

时间:2018-01-24 22:20:03

标签: java web-testing

我正在尝试测试两个不同的控制器类,因为我想从两个类中测试一个方法,我将使用@WebMvcTest,我的问题是有一种方法可以将mocks注入到这两个类中, 这样的事情可能是什么?

class Property(pyqtProperty):
    def __init__(self, value, name='', type_=None, notify=None):
        if type_ and notify:
            super().__init__(type_, self.getter, self.setter, notify=notify)
        self.value = value
        self.name = name

    def getter(self, inst=None):
        return self.value

    def setter(self, inst=None, value=None):
        self.value = value
        getattr(inst, '_%s_prop_signal_' % self.name).emit(value)

class PropertyMeta(type(QObject)):
    def __new__(mcs, name, bases, attrs):
        for key in list(attrs.keys()):
            attr = attrs[key]
            if not isinstance(attr, Property):
                continue
            value = attr.value
            notifier = pyqtSignal(type(value))
            attrs[key] = Property(
                value, key, type(value), notify=notifier)
            attrs['_%s_prop_signal_' % key] = notifier
        return super().__new__(mcs, name, bases, attrs)

class HelloWorldHtmlApp(QWebEngineView):
    ...
    class Backend(QObject, metaclass=PropertyMeta):
        foo = Property('Hello World')

        @pyqtSlot()
        def debug(self):
            self.foo = 'I modified foo!'

当然这会给出错误,所以这意味着在使用@WebMvcTest时我们只能测试一个控制器中的方法吗?每班

1 个答案:

答案 0 :(得分:2)

@WebMvcTest接受Class<?>[]作为value()

public @interface WebMvcTest {
  ...
    @AliasFor("controllers")
    Class<?>[] value() default {};
  ...
}

传递单个值(可能仅因为它是注释)或数组是如此合法 您的问题是您没有使用正确的语法来声明文字数组 试试:

@WebMvcTest({HomeController.class, BookController.class})
public class ControllerTest{

请注意,通过使用@WebMvcTest注释测试类而不重写注释声明中的任何参数:

@WebMvcTest
public class ControllerTest{

所有Spring控制器都添加在Spring上下文中。