首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >预期/接收对象相等,但测试失败

预期/接收对象相等,但测试失败
EN

Stack Overflow用户
提问于 2021-12-28 13:29:13
回答 1查看 1.6K关注 0票数 1

我有一个容器类A,它实例化了另一个B类:

代码语言:javascript
运行
复制
class A {
        
    constructor(){
        this.initClassB()
    }

   private initClassB() : void{
        const options = {id : 0, ... etc}
        
        new B(options)        
   } 
}

在我的测试文件中,我实例化了类A,并模拟了类B:

代码语言:javascript
运行
复制
import { mocked } from 'ts-jest/utils';
import { ClassA} from '../ClassA';
import { ClassB} from '../ClassB';

jest.mock('../ClassB');
const mockedClassB = mocked(ClassB, true);

describe('class B', () => {
    it('check if the minimum requirement are ok', () => {
      const { text, url } = ClassA.props.options;

      const expectedOptions = {
        event: ClassA.event,
        id: ClassA.getDefaultSiteId(),
        loadContent: () => '',
        loader: ClassA.loader,
        text: text,
        url: url,
      };

      
      // test fail whereas Expected/Received are identical
      expect(mockedClassB ).toHaveBeenCalledWith(expectedOptions)

      // fail with error : serialize to the same string
      expect(mockedCKTable.mock.calls[0][0]).toMatchObject(expectedOptions);
    });
  });

这是方法toHaveBeenCalledWith的错误

这是toMatchObject方法的错误:

以及依赖关系版本:

代码语言:javascript
运行
复制
{ 
"@types/jest": "^26.0.24",
"ts-jest": "^27.0.4",
"jest": "^27.0.6",
"typescript": "~4.1.3",
 "@types/jest": "^26.0.24",
}

我哪里出问题了?

EN

回答 1

Stack Overflow用户

发布于 2021-12-29 09:18:29

在这种情况下,非对称匹配器不起作用:

但!当我像这样实现时,测试是绿色的:

代码语言:javascript
运行
复制
 const expectedOptions = {
        id: 0,
        // etc ...
      };

const mockEntries = Object.entries(mockedCKTable.mock.calls[0][0]);

const expectedEntries = Object.entries(expectedOptions);

expect(JSON.stringify(mockEntries)).toEqual(JSON.stringify(expectedEntries));
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70507758

复制
相关文章

相似问题

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