ожидайте (str1) .to.equal (str2) проходит, даже если str1 не равен str2 - PullRequest
0 голосов
/ 19 февраля 2019

Мне нужно изменить порядок «объектов» в файлах json очень специфического формата.

Я написал тест для сравнения ожидаемого результата с фактическим результатом.

Тест expect(result).to.equal(expectedResult); проходит, хотя они имеют разные значения.Я подтвердил это, зарегистрировав обе переменные в консоли.Почему это происходит?

ЗНАЧЕНИЕ STRING RESULT

"result": [
   {
      "courses_dept": "math",
      "courses_avg": 77.00
   },
  {
      "courses_dept": "epse",
      "courses_avg": 88.50
  },
  {
      "courses_dept": "math",
      "courses_avg": 93.00
  },
  {
      "courses_dept": "epse",
      "courses_avg": 92.19
  }
    ]

ЗНАЧЕНИЕ STRING ожидаемый результат:

"result": [
    {
        "courses_dept": "epse",
        "courses_avg": 92.19
    },
    {
        "courses_dept": "math",
        "courses_avg": 93.00
    },
    {
      "courses_dept": "epse",
      "courses_avg": 88.50
    },
    {
        "courses_dept": "math",
        "courses_avg": 77.00
    }
    ]
}

Вот код.

describe("reversify", () => {
  it("Should reverse file", ()=> {
      let result = "";
      let expectedResult = "";

      try{
        let resultPromise = reversify("./test/json_files/inputs/t1.json");
        let expectedResultPromise = readJsonFile("./test/json_files/outputs/t1.json");

        //AS OF NOW THIS JUST READS THE FILE, HENCE TEST SHOULD FAIL
        resultPromise.then((data) =>{
            console.log('Result is: ', data);
            result = JSON.stringify(data);
        });

        expectedResultPromise.then(data => {
            expectedResult = JSON.stringify(data);
            console.log("Expected Result is: ",data);
        });

      } catch(err) {
        throw (err);
      } finally {
          expect(result).to.equal(expectedResult);
      }
  });
});

1 Ответ

0 голосов
/ 19 февраля 2019

Ваш оператор expect будет выполнен перед разрешением обещания, в результате чего значения result и expectedResult будут равны "" во время выполнения.Вы можете использовать await, чтобы дождаться выполнения обещания.

...