当前位置: 首页 > 知识库问答 >
问题:

React中的测试:如何从testfile设置状态?

邰钟展
2023-03-14

我想测试一个组件,它包含条件渲染。因此,如果一个状态为true,那么JSX-HTML应该呈现,如果不是false的话。

如果我想使用Jest、Enyzme、React测试库来测试这一点,我应该如何继续?

我有一个组件,它的实现细节对这个主题并不重要。请注意,它包含

const [isBlocked, setIsBlocked] = useState(false);

对于我的测试,我想把它设置为真。

describe('rendering DiffWindow', () => {
    it("renders HeaderBar components without crash", () => {
        const wrapper = shallow( < HeaderBar /> );

        // HOW TO SET HERE THE STATE?
      
        expect(wrapper.find('.header-is-there').exists()).toBeTruthy();
    });

});

共有1个答案

窦成荫
2023-03-14

尽管有实施细节,但您的问题有两种情况:

1.State由组件本身管理

对于boolean状态,初始值为false,随后是API调用,将其值更改为true,或者由用户交互触发的事件处理程序。

您需要设置一个模拟HTTP服务器来响应API调用,或者使用fireEvent[eventName]来模拟用户交互。当状态更改时,断言组件视图将更改。

2.状态由父组件管理

@blessenm提到了这个案例。通常,状态必须由父组件传递的prop初始化。

可以传递具有不同值的道具以更改零部件的视图。

 类似资料:
  • 我是一个初级程序员,努力理解我应该如何处理孙子状态(或者看看有孙子状态是否是个好主意)。 我的问题是。。。 1.是否可以通过更改孙子? 2.在美国生孙子是个坏主意吗? 为了举例说明,这里是一个组件的构造函数。 我把看作是子,而看作是孙子。 这里是一个JSX。 当触发时,我想验证函数'this.submit'中的输入。 在这个例子中,应该被设置(即更改),但是上面的代码不起作用。 也许分解此应用程序

  • 我目前在react native中有一个函数,它执行以下操作: 我运行上述命令,可以确认arrayId和title变量有效并包含数据。arrayId也不是“selectProduct”。我在调试时在那里添加了一个console.log,以确保它运行,事实上确实如此。我期望的行为是状态立即更新。 但是,所选下拉列表的状态不会更新。在this.setState更新之后添加:console.log(th

  • 问题内容: 如何在axios中设置获取响应的状态? 问题答案: 您在这里遇到语法错误。你应该试试这个 这里有几件事要注意: 是一个异步函数,这意味着其余代码将被执行。当服务器的响应到达时,传递给的函数将被执行。的返回值称为承诺对象。您可以在此处了解更多信息 关键字根据调用的位置而具有不同的值。in 应该 引用构造函数对象,并且在函数内部调用时,它引用该对象。这就是为什么我分配给变量的原因。您可以在

  • 假设我有以下名为Home的组件: 在PostForm组件与新Post一起提交后,我将如何更新主状态,或者如何从api重新获取数据。

  • 我传递的名称和值处理函数从子组件。 现在我想将状态设置为与提供的名称匹配的值。但是我不知道如何设置它。 我尝试了这种方式(但它给出了错误-'this.set状态不是一个函数'): 子组件的代码为: 设置它的正确语法是什么?

  • 提前谢了。我有一个状态数组,如下所示。 我需要添加一个项目到状态数组,我发现我们不需要做状态突变。如何使用PrevState设置状态。 如何调用set State以追加此状态数组。 像这样的东西?