LWC test sınıfı başarısız

Aug 31 2020

Bir LWC Bileşeninde bu apeks tel yöntemine sahibim

@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));
        }
    }

Aynısı için bir test sınıfı yazmaya çalışıyorum

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.
            })
    });
}); 

Hata almaya devam ediyorum

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,
    },
    ]
}

Biri lütfen burada neyi kaçırdığımı önerebilir.

Yanıtlar

1 MohithShrivastava Aug 31 2020 at 01:36

Derin klonlama için, LWC'de ES6 dinlenme parametresi sözdizimini kullanabilirsiniz. Aşağıdaki gibi bir şey

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

Ancak jest testi başarısızlığı, JSON dosyanızdaki verilere sahip olmanızdan kaynaklanıyor olabilir.

Aşağıdakileri JSON'da kullanmayı deneyin

[
 {
  "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,
 }
]