我正在尝试测试两个不同的控制器类,因为我想从两个类中测试一个方法,我将使用@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时我们只能测试一个控制器中的方法吗?每班
答案 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上下文中。