я хочу вернуть два разных ответа, когда насмешливый метод обещания - PullRequest
0 голосов
/ 06 мая 2019

У меня есть метод обещания, внутри которого есть условие if. когда я высмеиваю этот метод обещания. Я могу вернуть только одно значение. Я не в состоянии охватить оба условия. Может кто-нибудь, пожалуйста, помогите мне в этом.

import * as React from 'react';
import myLogs from '../service/myLogs';

export class MyMainComponent extends React.Component {

  constructor(...args) {
    super(...args);
    this.getLogs();
  }

  getLogs() {
    myLogs(5).then((logList) => {
        if(logList.length > 0 ) {
            // need to cover this.
        } else {
            // need to cover this.
        }
    });
  }

  render() { return null; }
}

обслуживание / myLogs.js

import axios from 'axios';

const myLogs = (loglength) => {
    return axios.get("url).then((response) =>{return response})
}
export default myLogs

сервис / насмехается / myLogs.js

const mockValue = [];
const mockValues = ["1", "2"];

const myLogs = (loglength) => {
// if i return "mockValue" then its covering else part. 
// if i return "mockValues" then its covering if part.
// But i want to cover both. how can i mock to cover both.
    return Promise.resolve(mockValue)
}
export default myLogs

тест / MyMainComponent.js

jest.mock(../service/myLogs.js
// some other code..

1 Ответ

0 голосов
/ 06 мая 2019

Может быть, вы можете использовать ваш параметр loglength для создания массива с желаемой длиной.

Как это:

const mockValue = (length) => Array(length).fill(3)
...
const myLogs = (loglength) => {
    return Promise.resolve(mockValue(loglength))
}
export default myLogs

Здесь вы можете указать, сколько журналов вы хотите в каждом тестовом примере:)

...