enzyme mocha AssertionError: expected 0 to equal 21
enzyme mocha AssertionError: expected 0 to equal 21
为应用程序编写一些单元测试并在描述块中碰壁。
/* eslint-env mocha */
const React = require('react')
const chai = require('chai')
const { expect } = chai
const Search = require('../js/Search')
const ShowCard = require('../js/ShowCard')
const enzyme = require('enzyme')
const { shallow } = enzyme
const data = require('../public/data')
describe('<Search />', () => {
it('should render as many shows as there are data for', () => {
const wrapper = shallow(<Search />)
expect(wrapper.find(ShowCard).length).to.equal(data.shows.length)
console.log(wrapper.debug())
})
})
搜索组件中的代码正在像这样呈现 ShowCard:
<div className='shows'>
{data.shows
.filter((show) => `${show.title} ${show.description}`.toUpperCase().indexOf(this.state.searchTerm.toUpperCase()) >= 0)
.map((show, index) => (
<ShowCard {...show} key={index} id={index} />
))}
</div>
(wrapper.find(ShowCard).length)
应该等于 (data.shows.length)
,但它给出了这个错误:
<Search /> should render as many shows as there are data for:
AssertionError: expected 0 to equal 21
+ expected - actual
-0
+21
at Context.<anonymous> (App.spec.js:19:45)
根据上述错误,问题开始于预期 equal(data.shows.length)
但我认为这没有错。谁能指出我正确的方向?
哇,好尴尬。我将 Search 构造函数的输入值的状态设置为 "default search term" - 从而防止出现任何搜索结果,直到该字符串被手动从输入中删除。
替换为空字符串解决了问题。现在所有测试都通过了。
为应用程序编写一些单元测试并在描述块中碰壁。
/* eslint-env mocha */
const React = require('react')
const chai = require('chai')
const { expect } = chai
const Search = require('../js/Search')
const ShowCard = require('../js/ShowCard')
const enzyme = require('enzyme')
const { shallow } = enzyme
const data = require('../public/data')
describe('<Search />', () => {
it('should render as many shows as there are data for', () => {
const wrapper = shallow(<Search />)
expect(wrapper.find(ShowCard).length).to.equal(data.shows.length)
console.log(wrapper.debug())
})
})
搜索组件中的代码正在像这样呈现 ShowCard:
<div className='shows'>
{data.shows
.filter((show) => `${show.title} ${show.description}`.toUpperCase().indexOf(this.state.searchTerm.toUpperCase()) >= 0)
.map((show, index) => (
<ShowCard {...show} key={index} id={index} />
))}
</div>
(wrapper.find(ShowCard).length)
应该等于 (data.shows.length)
,但它给出了这个错误:
<Search /> should render as many shows as there are data for:
AssertionError: expected 0 to equal 21
+ expected - actual
-0
+21
at Context.<anonymous> (App.spec.js:19:45)
根据上述错误,问题开始于预期 equal(data.shows.length)
但我认为这没有错。谁能指出我正确的方向?
哇,好尴尬。我将 Search 构造函数的输入值的状态设置为 "default search term" - 从而防止出现任何搜索结果,直到该字符串被手动从输入中删除。
替换为空字符串解决了问题。现在所有测试都通过了。