Clase de prueba LWC que falla

Aug 31 2020

Tengo este método de cable de vértice en un componente LWC

@wire(getCountriesData, { proposalId: '$proposalId' })
    countriesData(result) {
        this.wiredCountriesData = result;
        if (result.data) {
            this.countriesDataArray = JSON.parse(JSON.stringify(result.data));

            this.countriesDataArray.sort((a, b) => {
                return (a.sequenceNumber == undefined) - (b.sequenceNumber == undefined) || +(a.sequenceNumber > b.sequenceNumber) || -(a.sequenceNumber < b.sequenceNumber);
            })
            this.showSpinner = false;
        } else if (result.error) {
            console.log(JSON.stringify(result.error));
        }
    }

Estoy tratando de escribir una clase de prueba para el mismo

import { createElement } from 'lwc';
import ManageCountries from 'c/ManageCountries';
import { registerLdsTestWireAdapter, registerApexTestWireAdapter } from '@salesforce/sfdx-lwc-jest';
import getCountriesData from '@salesforce/apex/ManageCountriesController.getCountriesData';

// Mock realistic data
const mockGetCountriesData = require('./data/getCountriesData.json');

const getCountriesAdapter = registerApexTestWireAdapter(getCountriesData);


describe('c-manage-countries', () => {

    afterEach(() => {
        // The jsdom instance is shared across test cases in a single file so reset the DOM
        while (document.body.firstChild) {
            document.body.removeChild(document.body.firstChild);
        }
    });

    it('wireMthodTest1', () => {
        const element = createElement('c-manage-countries', {
            is: ManageCountries
        });
        element.proposalId = 'a3l1x0000004b7NAAQ';
        document.body.appendChild(element);

        getCountriesAdapter.emit(mockGetCountriesData);

        return Promise.resolve()
            .then(() => {
                // will write assert statements here.
            })
    });
}); 

Sigo recibiendo el siguiente error

getCountriesData.JSON

{
  "data": [
    {
      "ambComboInboundCourier": "Marken",
      "batchSize": 104,
      "countryId": "a6H1x00000095GSEAY",
      "countryName": "Albania (Tier 1)",
      "regionName": "EMEA",
      "selectedCountry": true,
      "sequenceNumber": 11,
    },
    {
      "ambComboInboundCourier": "Marken",
      "batchSize": 104,
      "countryId": "a6H1x00000095JeEAI",
      "countryName": "Argentina (Tier 1)",
      "regionName": "Americas",
      "selectedCountry": true,
      "sequenceNumber": 1,
    },
    ]
}

¿Podría alguien sugerir qué me estoy perdiendo aquí?

Respuestas

1 MohithShrivastava Aug 31 2020 at 01:36

Para la clonación profunda, puede usar la sintaxis de parámetros de descanso ES6 en LWC. Algo como abajo

this.countriesDataArray = {...result.data};

Sin embargo, la falla de la prueba de broma podría deberse a la forma en que tiene los datos en su archivo JSON.

Intenta usar lo siguiente en el JSON

[
 {
  "ambComboInboundCourier": "Marken",
  "batchSize": 104,
  "countryId": "a6H1x00000095GSEAY",
  "countryName": "Albania (Tier 1)",
  "regionName": "EMEA",
  "selectedCountry": true,
  "sequenceNumber": 11,
 },
 {
  "ambComboInboundCourier": "Marken",
  "batchSize": 104,
  "countryId": "a6H1x00000095JeEAI",
  "countryName": "Argentina (Tier 1)",
  "regionName": "Americas",
  "selectedCountry": true,
  "sequenceNumber": 1,
 }
]