【问题标题】:Expected object undefined using Jasmine toEqual使用 Jasmine toEqual 未定义预期对象
【发布时间】:2020-03-04 15:41:06
【问题描述】:

我创建了一个服务来屏蔽数据并编写了一个 Jasmine 测试来比较实际对象和预期对象。 当我运行测试时,我在服务返回的actual 对象上未定义。虽然当我在控制台登录时console.log(JSON.stringify(maskedData)); 定义了maskedData

LOG LOG: '{"handle":"#######@#####.com","displayName":"####ane","iss":"####:###.###.##.#"}'
Expected undefined to equal <jasmine.objectContaining(Object({ handle: '#######@#####.com', displayName: '####ane' }))>.

问题:

为什么服务返回对象在测试中评估为未定义但在控制台日志中定义?

我确实认为这可能是一个异步错误,因此在测试期间未定义值,但由于控制台记录该值有效,我不这么认为。

这是有关测试的要点:

const mockAddUserAction = {
    type: 'AddUser',
    payload: {
      handle: 'tedjane@five.com',
      displayName: 'tedJane',
      iss: 'http:192.168.12.1',
    },
  };

it('should mask PII user action.payload data with nested properties', async () => {
    const maskedData = service.maskPiiData(mockAddUserAction);
    console.log(JSON.stringify(maskedData));
    expect(maskedData.payload).toEqual(
      jasmine.objectContaining({
        handle: '#######@#####.com',
        displayName: '####ane',
      }),
    );
  });

【问题讨论】:

    标签: javascript angularjs object jasmine


    【解决方案1】:

    在服务返回结果之前调用expect 指令。您需要同步异步服务调用。尝试将await 添加到您调用服务的行中。

    const maskedData = await service.maskPiiData(mockAddUserAction);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-20
      相关资源
      最近更新 更多