gpt4 book ai didi

javascript - 我非常简单的 Jasmine 测试失败并显示消息 'Expected 0 to be 1.'

转载 作者:行者123 更新时间:2023-11-30 13:14:26 24 4
gpt4 key购买 nike

我是 CoffeeScript 和 Jasmine 的初学者。我尝试如下测试一个简单的类:

class Counter
count: 0

constructor: ->
@count = 0

increment: ->
@count++

decrement: ->
@count--

reset: ->
@count = 0

root = exports ? this
root.Counter = Counter

然后,我写了如下测试代码:

describe("Counter", ->
counter = new Counter
it("shold have 0 as a count variable at first", ->
expect(counter.count).toBe(0)
)

describe('increment()', ->
it("should count up from 0 to 1", ->
expect(counter.increment()).toBe(1)
)
)
)

第二次测试总是失败,消息如下:

Expected 0 to be 1.

谢谢你的好意。

最佳答案

如果您想要 increment,您需要使用预递增和预递减形式和 decrement返回更新值的方法:

increment: -> ++@count
decrement: -> --@count

x++产生 x 的值然后递增 x所以这个:

return x++

相当于:

y = x
x = x + 1
return y

鉴于此:

return ++x

是这样的:

x = x + 1
return x

所以 Jasmine 是对的,并且很好地发现了您代码中的错误。

例如,this code :

class Counter
constructor: (@count = 0) ->
incr_post: -> @count++
incr_pre: -> ++@count

c1 = new Counter
c2 = new Counter

console.log(c1.incr_post())
console.log(c2.incr_pre())

会给你01 (按此顺序)在控制台中,即使 @count将是 1里面都c1c2完成后。

关于javascript - 我非常简单的 Jasmine 测试失败并显示消息 'Expected 0 to be 1.',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12613713/

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