AssertionError:预期的{状态:'SUCCESS',数据:[]}等于{对象(状态,数据)}

时间:2019-05-06 10:04:11

标签: javascript angular testing chai

我正在为服务于发布请求的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 个答案:

答案 0 :(得分:1)

听起来像是您在问有关柴人的断言。

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