【问题标题】:Strange behavior of Jasmine test with CoffeeScript codes带有 CoffeeScript 代码的 Jasmine 测试的奇怪行为
【发布时间】:2012-12-04 05:26:43
【问题描述】:

我正在编写 Jasmine 测试,但它显示出奇怪的行为。

这是我的代码:

root = exports ? this
class root.SomeClass
  constructor: ->
    @index = 0
  incrementIndex: -> @index++
  decrementIndex: -> @index--

这是我的测试代码:

describe "Object", ->
  object = new SomeClass

  describe ".index", ->
    describe "when index = 3", ->
      object.index = 3

      describe "when next button is clicked", ->
        object.incrementIndex()
        it "returns 4", ->
          expect(object.index).toBe 4

      describe "when previous button is clicked", ->
        object.decrementIndex()
        it "returns 3", ->
          expect(object.index).toBe 2

测试结果如下:

Failing 2 specs

Photos initialized .index when index = 3 when next button is clicked returns 4.
Expected 3 to be 4.

Photos initialized .index when index = 3 when previous button is clicked returns 3.
Expected 3 to be 2.

奇怪的是当我注释掉最后4行测试代码时,测试通过了。我不明白发生了什么...>_

感谢您的帮助。

【问题讨论】:

  • 您的describeit 回调是否按照您认为的顺序发生?如果您在“上一个按钮”测试中放置两个 object.decrementIndex() 调用会发生什么?
  • 邮件Failing 1 spec Photos initialized .index when index = 3 when next button is clicked returns 4. Expected 2 to be 4. 已返回。我想object.index 的值保存在两个测试之间。我现在要试试beforeEach。谢谢。

标签: coffeescript jasmine


【解决方案1】:

您的测试相互影响。 Do setup in beforeEach blocks.

描述“对象”,->
  对象=未定义

  之前 ->
    对象 = 新的 SomeClass

  描述“.index”,->
    描述“当索引 = 3”,->
      之前 ->
        对象.index = 3

      描述“单击下一个按钮时”,->
        之前 ->
          object.incrementIndex()

        它“返回 4”,->
          期望(object.index).toBe 4

      描述“单击上一个按钮时”,->
        之前 ->
          object.decrementIndex()

        它“返回 3”,->
          期望(object.index).toBe 2

未检查这段代码是否有效,但仍显示您应该如何修复测试。请注意第 2 行中的 object = undefined。您需要在此处声明变量,否则 object 将是每个 beforeEachit 块的本地变量。

【讨论】:

  • 谢谢 skalee,我的代码符合您的建议。我不习惯使用beforeEach,但它非常重要。
  • @weed: beforeEach 在每次测试之前执行。将一些代码直接放在describe 块中将使其在定义测试之前执行1)一次和2)(即,在所有beforeEach 块之前,即使是在外部描述块中定义的那些)。这通常是不可取的。
猜你喜欢
  • 1970-01-01
  • 2012-06-14
  • 2012-08-07
  • 2015-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多