Скажу, у меня есть компонент, который выглядит следующим образом:Sinon.js - заглушка Реактивировать функцию компонента перед созданием компонента?
var React = require('react/addons');
var ExampleComponent = React.createClass({
test : function() {
return true;
},
render : function() {
var test = this.test();
return (
<div className="test-component">
Test component - {test}
</div>
);
}
});
module.exports = ExampleComponent;
В моем тесте, я мог бы сделать этот компонент с помощью TestUtils
, затем гасит метод следующим образом:
var renderedComponent = TestUtils.renderIntoDocument(<ExampleComponent/>);
sinon.stub(renderedComponent, 'test').returns(false);
expect(renderedComponent.test).toBe(false); //passes
Но есть способ, которым я мог бы сказать Синону, автоматически отключать функцию компонента каждый раз, когда создается экземпляр этого компонента? Пример:
sinon.stubAll(ExampleComponent, 'test').returns(false); //something like this
var renderedComponent = TestUtils.renderIntoDocument(<ExampleComponent/>);
expect(renderedComponent.test).toBe(false); //I'd like this to pass
Если это невозможно, существует ли потенциальное решение, которое подходит для обеспечения функциональности, которую я ищу?
Спасибо за ответ. Хотя, похоже, это работает в некоторых случаях, это не совсем то, что я ищу. Я, вероятно, должен был быть более конкретным. У меня есть родительский и дочерний компонент, а дочерний компонент визуализируется внутри метода «render» родительского компонента. Родитель использует 'require()' для получения конструктора, и, похоже, не существует способа переопределить прототип ребенка внутри моего теста. Имеет ли это смысл? Если вы захотите, я могу обновить свой вопрос. –
Было бы здорово, если бы вы могли расширить вопрос на примере. – Victor
Я нашел рабочее решение, но я все равно буду награждать вас щедростью. –