Nano Hash - криптовалюты, майнинг, программирование

Фермент: Метод «текст» предназначен только для запуска на одном узле. 0 найдено вместо

Я использую React v15.4, babel-jest v18 и фермент v2.5.1

У меня есть простой компонент React:

import React, {Component} from 'react'
import {FormattedRelative} from 'react-intl'
import pageWithIntl from '../components/PageWithIntl'
import Layout from '../components/Layout'

class About extends Component {
  static async getInitialProps ({req}) {
    return {someDate: Date.now()}
  }

  render () {
    return (
      <Layout>
        <h1>About</h1>
        <p>
          <FormattedRelative
            value={this.props.someDate}
            updateInterval={1000}
          />
        </p>
      </Layout>
    )
  }
}

export default pageWithIntl(About)

И простой тест Jest / Enzyme:

/* global it, expect, describe */

import React from 'react'
import { shallow } from 'enzyme'
import renderer from 'react-test-renderer'
import About from '../pages/about.js'

describe('With Enzyme', () => {
  it('App shows "About"', () => {
    const about = shallow(
      <About />
    )
    expect(about.find('h1').text()).toEqual('About')
  })
})

Тест Jest должен пройти, но я получаю сообщение об ошибке:

Метод «text» предназначен для запуска только на одном узле. 0 нашел взамен.

Что мне не хватает?

=== Обновить

Тест снимка проходит:

describe('With Snapshot Testing', () => {
  it('About shows "About"', () => {
    const component = renderer.create(<About />)
    const tree = component.toJSON()
    expect(tree).toMatchSnapshot()
  })
})

Есть ли способ интегрировать тест ферментного ожидания в тест-снимок? И как?

28.03.2017

Ответы:


1

Это вызвано тем фактом, что shallow не отображает дочерние компоненты, а ваш компонент был обернут функцией. So shallow возвращает только представление функции, а не компонента. Вы можете использовать dive() для доступа к реальному компоненту

/* global it, expect, describe */

import React from 'react'
import { shallow } from 'enzyme'
import renderer from 'react-test-renderer'
import About from '../pages/about.js'

describe('With Enzyme', () => {
  it('App shows "About"', () => {
    const about = shallow(
      <About />
    ).dive()
    expect(about.find('h1').text()).toEqual('About')
  })
})
28.03.2017
  • Я по-прежнему получаю сообщение об ошибке: «Текстовый метод» предназначен для запуска только на одном узле. 0 нашел взамен. в ShallowWrapper.single (node_modules / энзим / build / ShallowWrapper.js: 1502: 17) в ShallowWrapper.text (node_modules / энзим / build / ShallowWrapper.js: 744: 21) в Object. ‹anonymous› (__tests __ / about.test .js: 13: 29) В приложении Enzyme ✕ отображается информация о программе (11 мс) 28.03.2017
  • Может быть, pageWithIntl оборачивает его другой функцией. Что помогает мне узнать, что происходит, так это визуализировать его в снимке, чтобы фактически увидеть визуализированный результат. 28.03.2017
  • Не могли бы вы рассказать, как бы вы отрендерили это на снимке? Тест снимка с const component = renderer.create (‹About /›); const tree = component.toJSON (); ожидать (дерево) .toMatchSnapshot (); проходит, но с тем же оператором ожидания, приведенным выше, не выполняется с тем же сообщением об ошибке. 29.03.2017
  • вот так: expect(shallow(<About />).dive()).toMatchSnapshot() затем вы можете добавить еще dive(), пока не дойдете до реального компонента. 29.03.2017
  • получение ошибки ниже после того, как я использую dive () TypeError: ShallowWrapper :: dive () не может быть вызван для компонентов хоста 14.02.2019

  • 2

    См. Эту ссылку, чтобы узнать, как использовать .findWhere в неглубокой копии: https://blogs.sequoiainc.com/an-enzyme-gotcha/

    Ниже приведен пример поиска узлов / html-элементов типа «p», содержащих желаемый текст, который представляет зарплату «100 000 долларов США».

    displayemployee = shallow(<DisplayEmployee employeeData={employee}
    
    it('renders the employees salary', () => {
      expect(
        displayemployee.findWhere(
        n => n.type() === 'p' && n.contains('$100,000.00')
      )
    )
    

    Неглубокая копия возвращает все узлы, которые возвращает компонент реакции, и я просматриваю эти узлы с помощью .findWhere, а не .text. Это потому, что .text ожидает просмотра одиночного узла; .text не умеет сканировать многие узлы.

    13.08.2018

    3

    Используйте .first ()

    пример const wrapper = shallow ()

    wrapper.find ('h1 или p или .ClassName или #id'). first ();

    import React from 'react'
    import { shallow } from 'enzyme'
    import renderer from 'react-test-renderer'
    import About from '../pages/about.js'
    
    describe('With Enzyme', () => {
      it('App shows "About"', () => {
        const about = shallow(
          <About />
       )
      expect(about.find('h1').first().text()).toEqual('About')
     })
    })
    
    12.06.2018

    4

    Вы также можете «экспортировать класс» вместе с «экспортировать по умолчанию» и импортировать компонент в тестовой версии с деструктуризацией импорта.

    Например:

    import React, {Component} from 'react'
    import {FormattedRelative} from 'react-intl'
    import pageWithIntl from '../components/PageWithIntl'
    import Layout from '../components/Layout'
    
    export class About extends Component {
      static async getInitialProps ({req}) {
        return {someDate: Date.now()}
      }
    
      render () {
        return (
          <Layout>
            <h1>About</h1>
            <p>
              <FormattedRelative
                value={this.props.someDate}
                updateInterval={1000}
              />
            </p>
          </Layout>
        )
      }
    }
    
    export default pageWithIntl(About)
    

    И тест:

    /* global it, expect, describe */
    
    import React from 'react'
    import { shallow } from 'enzyme'
    import renderer from 'react-test-renderer'
    import { About } from '../pages/about.js'
    
    describe('With Enzyme', () => {
      it('App shows "About"', () => {
        const about = shallow(
          <About />
        )
        expect(about.find('h1').text()).toEqual('About')
      })
    })
    
    02.04.2019
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..