测试数组时 Jest 预期 0 收到 1

兰德尔

我正在尝试测试以查看在执行此测试时未输入任何输入时它们是否为无列表

App.test.tsx

describe('Should test empty array on onSubmit method',() => {
  it('should test empty array  onSubmit method', ()=>{
    const component = shallow(<App/>)
    const form = component.find('Form').at(0);
    const preventDefault = jest.fn();
    // const items = ['Learn react', 'rest', 'go out'];
    // component.setState({
    //  currentTask:"test-task",
    //  tasks:[...items, 'test-task']
    // })

    // form.simulate('submit', { preventDefault });
    // expect(preventDefault).toBeCalled();
    // form.props().onSubmit();
    form.simulate('submit', {preventDefault})
    expect(component.state().tasks.length).toBe(0);

  })
})

但是我收到这个错误

● 应该在 onSubmit 方法上测试空数组 › 应该在 onSubmit 方法上测试空数组

expect(received).toBe(expected) // Object.is equality

Expected: 0
Received: 1

我注意到我有读取这个的 linting 错误

Property 'tasks' does not exist on type 'Readonly<{}>'.

在这条线上

expect(component.state().tasks.length).toBe(0);

我应该改变什么才能通过?

我引用了类似于这个问题的东西

预期数组但在 Jest 中收到数组

但该解决方案对我不起作用。

应用程序.tsx

import React from 'react';
import logo from './logo.svg';
import Form from './Form';
import './App.css';
// we need an interface to be able to use the state properties, if not error.
// the same rule applies when using props
// so here we call Istate
interface IState {
  currentTask: string;
  tasks: Array<string>;
}

export default class App extends React.Component<{}, IState>{
  constructor(props: {}){
    super(props);
    this.state = {
      currentTask: "",
      tasks:[]
    }
  }

  // when using e.preventDefault in typescript, or any paramater, it has to be followed
 //  by the following any, array, string, etc. in this case we use any

  handleSubmit(e: any){
    e.preventDefault();
    this.setState({
      currentTask: "",
      tasks: [...this.state.tasks, this.state.currentTask]
    }, () => {
      console.log(this.state.tasks)
    })


  }

  onChange = (e: any) => {
    e.preventDefault();
    this.setState({
      currentTask: e.target.value
    })

  }

  render(){
    return (
      <div className="App">
        <h1 className="sampleh1">React Typescript Todo</h1>

        <Form 
          onSubmit={(e)=> this.handleSubmit(e)}
          currentTask={this.state.currentTask}
          onChange={this.onChange}  
        />
      </div>
    );

  }
}

边注

如果我更改代码

expect(component.state().tasks.length).toBe(0);

expect(component.state().tasks).toHaveLength(0);

我明白了,我很困惑,因为它们在数组中没有值,那么为什么它接收 1 而不是 0 ???

 Received array:  [""]
阿努拉达·库玛丽

该错误是有效的,因为在handleSubmit代码中,您将空字符串作为元素推送到数组中tasks,因此长度显示为 1。

this.setState({
      currentTask: "",
      tasks: [...this.state.tasks, this.state.currentTask]
    }

所以在上面的代码执行之后, state.tasks = [""] // 其长度现在将为 1。所以,如果你的目标是推送 currentTask,如果它存在,那么在这里使用一些条件运算符。

this.setState(prevState => ({
      currentTask: "",
      tasks: prevState.currentTask ? [...prevState.tasks, prevState.currentTask] : prevState.tasks
    })

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

错误:[filter:notarray]预期的数组,但收到:0

预期数组但在Jest中收到了数组

厨师验证错误无效!”:预期进程以[0]退出,但收到“ 1”

错误:收到意外的更新计数(实际:0,预期为1)

预期数组但已收到

RabbitMqBundle使用者退出,异常为“读取数据时出错。接收到0而不是预期的1个字节”和“管道断开或关闭的连接”

JS Jest Mocking - 预期收到未定义的错误

angularjs 单元测试 [orderBy:notarray] 预期的数组但已收到

层顺序的输入0与预期的ndim = 3层(发现ndim = 2)不兼容。收到的完整图形:[无,1]

与 TypeScript + Jest + Enzyme 反应 -- 错误测试预期 1 个参数,但得到 2

错误:[orderBy:notarray] 预期的数组,但收到了:{}

为什么我收到此错误“图层“dense_30”的输入 0 与图层不兼容:预期 min_ndim=2,发现 ndim=1。收到完整形状:(无,)”

typeerror 的 Jest 测试未按预期运行

如何解决预期值:“ 1”接收到的数组:带笑话框架的TypeORM中的[{“ COUNT(*)”:“ 1”}]错误

运行 Rspec 和 Sinatra 时,我不断收到 ArgumentError:参数数量错误(给定 2,预期为 0)

当预期浮点值介于 0 和 1 之间时,TensorFlow MLP 始终返回 0 或 1

层 conv1d_1 的输入 0 与层不兼容:预期 ndim=3,发现 ndim=2。收到的完整形状:[无,200]

层density_18的输入0与该层不兼容:输入形状的预期轴-1的值为3500,但接收到形状为[None,7]的输入

层“conv1d_3”的输入 0 与层不兼容:预期 min_ndim=3,发现 ndim=2。收到的完整形状:(无,3)

ValueError:连续图层_1的输入0与以下图层不兼容::预期的min_ndim = 4,找到的ndim = 3。收到完整的图形:[无,256、256]

层 lstm_11 的输入 0 与层不兼容:预期 ndim=3,发现 ndim=4。收到完整形状:[无、5000、1、6]

层序的输入 0 与层不兼容:输入形状的预期轴 -1 具有值 3,但收到的输入具有形状

显示失败测试中预期和收到的全部输出

JSONDecodeError:预期值:翻译文本时,第1行第1列(字符0)

抓取时出错:“预期值:第 1 行第 1 列(字符 0)”

python / numpy ValueError:预期的1D或2D数组,取而代之的是0D数组

RSpec:测试是否调用了方法 - 参数数量错误(给定 0,预期为 1)

恐慌:sql:预期0参数,得到1

预期0个参数,得到1个