Обычно я экспортирую как подключенный компонент для использования в приложении, так и сам компонент для тестирования.
Похоже, у вас есть небольшая опечатка, передайте { target: { value: 2 } }
как ваше событие.
Вот рабочий пример на основе предоставленного вами кода:
import * as React from 'react';
import { shallow } from 'enzyme';
class DeleteOne extends React.Component {
handleChange = e => {
this.setState({
num: e.target.value
});
};
render() {
return (
<div>
<h2>Delete cat :(</h2>
<input
onChange={this.handleChange}
type="number"
placeholder="enter id here"
/>
<button id="deleteBtn" onClick={this.deleteOne}>
Delete
</button>
</div>
);
}
}
it("Updates the state", () => {
const wrapper = shallow(<DeleteOne />);
const input = wrapper.find("input");
input.simulate("change", { target: { value: 2 } }); // 'value' instead of 'num'
expect(wrapper.state().num).toEqual(2); // SUCCESS
});
На самом деле вы можете использовать функцию sprintf , которая будет возвращать отформатированную строку и помещать ваши переменные на место заполнителей.
Это также дает вам большие возможности по форматированию и отображению вашей строки.
$output = sprintf("Here is the result: %s for this date %s", $result, $date);
Если вы используете % s
, я думаю, что это тот же самый заполнитель, который printf использует для строки. Таким образом, вы могли бы сделать:
$text = sprintf($message, "replacement text");
Думаю, это должно работать по крайней мере ...
Вы можете использовать sprintf
, который очень похож на функции C printf
и sprintf
.
попробуйте динамические переменные:
$placeholder = 's';
str_replace("%".$placeholder,$$placeholder,$message);
тогда% s будет заменен на $ s, переменная
$find = array(
'#name#',
'#date#'
);
$search = array(
'someone\'s name',
date("m-d-Y")
);
$text_result = str_replace($find, $search, $text);
Обычно я использую это для своего кода, получая $ text из некоторые файлы text / html затем делают $ text_result в качестве вывода