Factory class 创建无类型对象
Factory class creates untyped objects
我有一家工厂。它的目的是促进依赖注入。它看起来像:
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
它使用此处的 iterableEquality
和 subsetEquality
测试:
https://github.com/facebook/jest/blob/master/packages/expect/src/utils.ts
toMatchObject
检查它是一个对象,它们具有相同的构造函数(看起来像失败的测试),然后您与之比较的对象具有该对象的键的子集你正在测试。
我会先看看从面条工厂返回的对象的构造函数。
如果您在 GitHub 存储库中创建 MRE,我将检查它并跟踪代码执行(或者您可以这样做 - 只需在 Jest 中注入 console.log
语句node_modules
).
我有一家工厂。它的目的是促进依赖注入。它看起来像:
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
它使用此处的 iterableEquality
和 subsetEquality
测试:
https://github.com/facebook/jest/blob/master/packages/expect/src/utils.ts
toMatchObject
检查它是一个对象,它们具有相同的构造函数(看起来像失败的测试),然后您与之比较的对象具有该对象的键的子集你正在测试。
我会先看看从面条工厂返回的对象的构造函数。
如果您在 GitHub 存储库中创建 MRE,我将检查它并跟踪代码执行(或者您可以这样做 - 只需在 Jest 中注入 console.log
语句node_modules
).