toEqual
不按预期工作时,我尝试测试Header
对象。茉莉花toEqual方法不能使用标题对象
我隔离在下面的示例中的问题:
const foo = new Headers();
const bar = new Headers();
bar.append('some', 'value'); // bar is mutated
expect(foo).toEqual(bar); // returns true...
如何规范通虽然foo
和bar
有什么不同?
toEqual
不按预期工作时,我尝试测试Header
对象。茉莉花toEqual方法不能使用标题对象
我隔离在下面的示例中的问题:
const foo = new Headers();
const bar = new Headers();
bar.append('some', 'value'); // bar is mutated
expect(foo).toEqual(bar); // returns true...
如何规范通虽然foo
和bar
有什么不同?
要回答你的问题,茉莉花的toEqual
方法检查严格的平等。在JavaScript(和TypeScript)中,如果两个对象是完全相同的对象(该对象的相同实例),则只能将它们视为100%相等。这意味着你只能验证以下将通过:
expect(foo).toEqual(foo);
这听起来很无助,但是当你需要知道你有你想要的对象的确切实例是在一个大的应用程序非常有用。
关于如何用茉莉花测试,可以测试Headers
对象中的单个标题(例如,您可以验证foo.get('content-type')
是否正确);
expect(foo.get('content-type')).toEqual(bar.get('content-type'));
您将希望通过其关键字获取特定标题值。茉莉花可能不会像检查差异那样需要深度检查。这会更好,只需要您创建一个头对象。
const foo = new Headers();
let newHeaderKey = 'some';
let newHeaderValue = 'value';
foo.append(newHeaderKey , newHeaderValue); // foo is mutated
expect(bar.headers.get(newHeaderKey)).toEqual(newHeaderValue); // returns true...