工厂类创建未类型化的对象

查尔斯·班福德

我有工厂 目的是促进依赖项注入。看起来像:

import SomeImportantObject from "./SomeImportantObject"
import DataInterface from "./DataInterface"

class NoodleFactory {
  this.dependency: SomeImportantObject
  constructor(dependency: SomeImportantObject) {
    // Dependencies.
    this.dependency = dependency;
  }

  create(data: DataInterface) {
    return new Noodle(data, this.dependency);
  }
}

我正在为其创建测试,以确保它正确创建了对象。测试非常类似于:

data = {
  // Data.
}

mockDependency = "a mocked dependency."

testNoodleFactory = new NoodleFactory(mockDependency);

const expected = new Noodle(data, mockDependency);
const actual = testNoodleFactory.create(data);

test("Factory creates noodles", () => {
  expect(actual).toMatchObject(expected);
});

运行测试时,出现以下错误:

    @@ -1,6 +1,6 @@
    - Noodle {
    + Object {

所有内部数据匹配。

是什么导致对象类型不同?

乔什·沃尔夫

使用console.log检查什么会从每次调用返回。

关于您的代码的理由(不执行),我看不到任何解释。

我快速浏览了Jest源代码。对象匹配器在这里:https : //github.com/facebook/jest/blob/master/packages/expect/src/matchers.ts#L878

从此处使用iterableEqualitysubsetEquality测试:https : //github.com/facebook/jest/blob/master/packages/expect/src/utils.ts

toMatchObject 检查它是否是一个对象,它们是否具有相同的构造函数(看起来像测试失败),然后将您与之比较的对象包含要测试的对象的键的子集。

我将首先查看从Noodle工厂返回的对象的构造函数。

如果您在GitHub存储库中创建MRE,我将对其进行签出并跟踪代码执行(或者您可以这样做-只需console.log在的Jest中插入语句node_modules)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

创建与参数化类型相同的类的对象

从类模板创建对象的工厂功能模板?

使用匿名类创建参数化类型对象

对象工厂设计以初始化父类或子类对象

使用带有类型参数的工厂方法,使用参数化的构造函数创建派生类

Java:使用工厂实例化类型T的数组对象

从C#类创建序列化JSON列表类型对象

创建类对象时出现类型错误

无法从 Maven 类型项目创建类的对象

使用类类型定义创建普通对象

Java从类类型实例化对象

Java中的类对象类型参数化

创建明确专门的模板类对象会产生“对象具有初始化但类型不完整”的错误

如何使对象工厂保持类型

扩展本机对象的工厂/类

伴随对象和案例类的工厂方法创建的“对象相等”有什么区别?

在不使用指针的情况下,如何允许未初始化类类型的对象并确定何时是这种情况?

用子类的类型或其父类的类型创建子类对象

覆盖File类toString,而不必创建覆盖类类型的对象

如何为未实例化的对象实例化类函数?

Laravel Factory为同一工厂调用之间未隔离的每个对象创建

Swift:创建一个将类类型作为参数的工厂函数,并输出该类的构造函数

如何创建返回不同接口类型和抽象类的通用工厂

从类工厂函数创建清晰的TypeScript类

通过工厂方法的对象实例化未给出期望的结果

使用名称和类型属性的类型化值创建对象

是否可以从继承的工厂方法中通用地实例化JS类类型?

使用pytest和factory-boy,如何为非传统类型的对象创建工厂?

创建具有相同基本类型的不同对象。工厂模式?