首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有函数的RxJS大理石测试对象

带有函数的RxJS大理石测试对象
EN

Stack Overflow用户
提问于 2019-09-07 01:13:22
回答 1查看 430关注 0票数 1

我从观察点返回一个物体。它的一个属性是函数。

在分配了甚至是空函数并发出对象之后,toBeObservable期望会因为不是深度匹配而失败。

我正在使用rxjs-marbles/jest进行测试。以下是示例测试用例:

代码语言:javascript
复制
it('...', marbles(m => {
  const source = m.cold('(a|)');
  const expected = m.cold('(b|)', { b: {
    label: 'A',
    action: () => { }
  } });

  const destination = source.pipe(
    map(() => ({
      label: 'A',
      action: () => { }
    }))
  );
  m.expect(destination).toBeObservable(expected);
}));

结果如下:

代码语言:javascript
复制
expect(received).toEqual(expected) // deep equality

Expected: [{"frame": 0, "notification": {"error": undefined, "hasValue": true, "kind": "N", "value": {"action": [Function action], "label": "A"}}}, {"frame": 0, "notification": {"error": undefined, "hasValue": false, "kind": "C", "value": undefined}}]
Received: serializes to the same string

我唯一需要检查的是action是否在object中定义。有可能吗?

EN

回答 1

Stack Overflow用户

发布于 2019-09-09 15:39:29

事实证明,可以这样定义expected

代码语言:javascript
复制
const expected = m.cold('(b|)', { b: {
    label: 'A',
    action: expect.any(Function)
  } });

结果将会匹配。

奇怪的是,我想我几天前试过了,然后它就不起作用了,但也许我做的不一样。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57826181

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档