AssertionError: ожидается {status: 'SUCCESS', data: []} равно {Object (status, data)} - PullRequest
1 голос
/ 06 мая 2019

Я запускаю модульный тест для вызова API, который обслуживает пост-запрос.Я передаю тело запроса и должен получить ответ в виде данных аккаунта.Но я получаю только ошибку подтверждения

Примечание. Данные извлекаются из Azure

spec.js

const accounts=require('./accounts');
const should=require('chai').should();
const chai=require('chai');
const chaiAsPromised=require('chai-as-promised');

chai.use(chaiAsPromised);
chai.should();

....

 beforeEach(function()
 {
    mockResponse=
    [
      {
         "AccountId": "xyz",
         "AccountState": "Active"
      }     
    ]

     it('Should get account from Azure API', function() {
      return accounts.getActivatedAccounts(req.body.customerNumber).
      should.eventually.equal(mockResponse); 

    });  
**JavascriptFile**

function getActivatedAccounts(accounts) {
 let promise = new Promise(function(resolve, reject) {
 fetch(Url , { headers: config.headersAPIM})

 .then(response => response.json())
 .then(accounts => {
  if (accounts) {
        Accounts[accounts] = [];
        for (account in accounts) {
        let accountType = accounts[account]['type]'];
        Accounts[email].push(accounts[account]);

       }

       let reply = {
          status : "SUCCESS",
          data : Accounts[accounts]
        }
        resolve(reply);  
      } else {
        let reply = {
          status : "SUCCESS",
          data : accounts
        }
        resolve(reply);     
      }
    })

    .catch(err => {
      console.log("Error: Could not find accounts");
      console.log('Error:' + err);
      let reply = {
        status:"FAILURE", 
        err: "Error: Could not find accounts. " + err
      }
      resolve(reply);
    })
  });
  return promise;
}

Я не могудай javascript файл, который вызывает сервис, я дам его в разделе ответов

1 Ответ

1 голос
/ 06 мая 2019

Звучит так, будто вы спрашиваете об утверждении Чая.

equal использует строгое равенство, поэтому, если два объекта не являются буквально одним и тем же объектом, он потерпит неудачу.

eql использует сравнение глубокого равенства и будет проходить, если объекты имеют одинаковые свойства и значения.

Вот простой пример:

const chai = require('chai');
const chaiAsPromised = require('chai-as-promised');

chai.use(chaiAsPromised);
chai.should();

const getActivatedAccounts = () => 
  Promise.resolve({ status: 'SUCCESS', data: ['some', 'data'] });

it('Should get account from Azure API', function () {
  return getActivatedAccounts()
    .should.eventually.eql({ status: 'SUCCESS', data: ['some', 'data'] });  // Success!
}); 
...