我有工厂 目的是促进依赖项注入。看起来像:
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
检查它是否是一个对象,它们是否具有相同的构造函数(看起来像测试失败),然后将您与之比较的对象包含要测试的对象的键的子集。
我将首先查看从Noodle工厂返回的对象的构造函数。
如果您在GitHub存储库中创建MRE,我将对其进行签出并跟踪代码执行(或者您可以这样做-只需console.log
在的Jest中插入语句node_modules
)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句