В выпуске 2.0.32-бета команда Mockito перенесла классы cglib в разделенную банку . Но PowerMock по-прежнему зависит от перемещенных классов, поэтому вы получаете java.lang.NoClassDefFoundError.
В версии 1.6.2 классы Mockito были скопированы в PowerMock, но не все. В качестве обходного пути я могу предложить клонировать, строить и добавлять к classpath файл mockito-cglib ( https://github.com/mockito/mockito-cglib ).
PowerMock будет иметь поддерживаемый Mockito 2 API с версии 1.6.5, который будет выпущен к концу мая, но все равно будет использовать cglib. Полный Mockito 2 с Bytebuddy будет поддерживаться в версии после 1.6.5.
Вы можете использовать синтаксис, введенный jss-plugin-global
'@global': {
body: {...}
}
. Также порекомендуйте создать для этого отдельный компонент и оберните им свой компонент. В противном случае ваш конкретный компонент станет менее пригодным для повторного использования.
Я просто разработал ответ Олега, вот что я сделал:
1. Создайте свой собственный JssProvider. Примечание: Пришлось бы также добавить jss-plugin-camel-case
, в противном случае он не будет анализировать мои свойства с camelCase
на lisp-case
:
import App from './App';
import { create } from 'jss';
import { JssProvider } from 'react-jss';
import globalPlugin from 'jss-global';
import camelCase from 'jss-plugin-camel-case';
const jss = create();
jss.use(globalPlugin(), camelCase());
render(
<JssProvider jss={jss}>
<Router>
<App />
</Router>
</JssProvider>
document.getElementById("app")
);
2.Добавил мое глобальное свойство в топ компонент уровня
import React from "react";
import Main from "./common/ui/components/Main";
import NotFound from "./components/NotFound";
import injectSheet from 'react-jss';
const style = {
'@global': {
body: {
margin: 0
}
}
};
const App = () => {
return (
<Main>
<Switch>
<Route component={NotFound}/>
</Switch>
</Main>
);
};
export default injectSheet(style)(App);
И это все! Работал как шарм.
РЕДАКТИРОВАТЬ: После еще одного исследования я обнаружил, что мне не нужен шаг 1. Просто добавление стиля @global
к моему компоненту App
сделало свою работу. Я думаю, этот плагин jss-global
должен быть по умолчанию в react-jss
. (кто-то поправит меня, если я ошибаюсь)