gpt4 book ai didi

javascript - Karma/Jasmine 规范——预期 { } 等于 { }

转载 作者:行者123 更新时间:2023-11-29 18:12:13 25 4
gpt4 key购买 nike

我正在运行 Karma 规范来测试 Egghead.io 教程中概述的模型的 Angular 基类的功能。

该行为似乎有效,但我遇到了一个奇怪的错误:

PhantomJS 1.9.7 (Mac OS X) BCCache adds a cache to the model FAILED
Expected { } to equal { }.
Error: Expected { } to equal { }.

What I could find of this error (很难搜索,考虑到这些字符——表明 toEqual 应该能够识别两个对象的等价性——所以我有点难过。

这是规范代码(coffeescript):

describe 'BCCache', ->
it "adds a cache to the model", ->
expect(Post.cached).toEqual({})

这是它正在测试的内容:

base.coffee

angular.module("BaseClass")
.factory "BCBase", ['BCCache', (Cache) ->
Base = (attributes) ->
_constructor = this
_prototype = _constructor.prototype

_constructor.cached = new Cache()

return Base
]

cache.coffee

angular.module('BaseClass')
.factory 'BCCache', ->
Cache = ->
return Cache

规范基本上断言 cached 方法(当前)返回一个新的空对象,cache.coffee 文件似乎成功地做到了这一点。但不知何故, karma 并不认为这两个空物体是等价的。知道为什么吗?我有点难过。

最佳答案

Post.cachedCache 的一个实例,而您的 {} 只是一个无聊的 Object。 Jasmine 认为使用不同的构造函数是 toEquals 比较失败的正当理由。

如果你想像上面那样检查相等性,你可以这样做:

var mockCache = new Cache();
expect(Post.cached).toEqual(mockCache);

或者,您可以只检查它是否为空对象:

expect(Object.keys(Post.cached).length).toBe(0);

感谢 Jeff Storey 提供代码链接:https://github.com/pivotal/jasmine/blob/master/src/core/matchers/matchersUtil.js#L143

关于javascript - Karma/Jasmine 规范——预期 { } 等于 { },我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26350153/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com