【问题标题】:Unit test for creation object创建对象的单元测试
【发布时间】:2017-12-11 19:03:12
【问题描述】:

我开始学习使用 jasmine 进行单元测试。也许有人可以向我解释 - 我需要如何检查创建新对象,例如:

const outLog = {
  time: newTime,
  request: {
    direction: 'OUT',
    method: data.request.method,
    title: data.request.url,
    body: data.request.data,
    headers: getHeaders(data.request.headers),
  },
  response: {
    status: '',
    headers: {},
    body: {},
  },
};

if (data.response && data.response !== null) {
  outLog.response.status = data.response.status;
  outLog.response.body = data.response.data;
  outLog.response.headers = getHeaders(data.response.headers);
}

log.out.push(outLog);

是否需要用真实数据填写请求方法、请求标题等字段并检查

const outLog = {
  request: {
    method: 'POST',
    title: 'title',
    ...
    ...
  },
}

expect(outLog.request.method).toEqual('POST'); 期望(outLog.request.title).toEqual('title');

谢谢!

【问题讨论】:

    标签: javascript unit-testing jasmine


    【解决方案1】:

    为了检查对象,大多数框架通常会在您比较两个对象时提供某种漂亮的差异。

    要得到这个,你首先需要将它与一个对象字面量进行比较:

    expect(outLog).toEqual({
       request: {
         method: 'POST',
         title: 'title',
         ...
    })
    

    这也从所有期望语句中删除了很多逻辑,这应该有助于维护和调试。此外,当有许多不同的断言时,较早的断言会掩盖后面的断言,从而创建不必要的反馈循环,而同一件事可以通过单个断言完成。一位单元测试思想领袖通过建议单元测试应该只使用single assertion 来解决这个问题,以帮助他们保持专注、减少调试时间,并使他们更容易工作和理解。

    【讨论】:

    • 嗨!感谢您的解释!我是否需要在期望之前定义 outLog ?谢谢!
    猜你喜欢
    • 2010-12-16
    • 1970-01-01
    • 1970-01-01
    • 2011-08-23
    • 2014-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-28
    相关资源
    最近更新 更多