【问题标题】:How to make this test pass in Mocha?如何让这个测试在 Mocha 中通过?
【发布时间】:2016-11-19 07:15:15
【问题描述】:

我正在使用 angular、chai、angularmocks、mocha、karma。测试输出这个错误:

输入错误

map@[本机代码]

app/main.coffee:30:23

test/main.spec.coffee:59:20

assert = chai.assert
expect = chai.expect

describe("The Address Book App", () ->
  describe("the proper filter", () ->
    proper = null
    beforeEach( () ->
      module("AddressBook")
      inject( ($injector)->
        proper = $injector.get("$filter")("proper")
      )
    )

    it("should proper case a string", () ->
      expect(proper("ned stark")).to.equal("Ned Stark")
    )
  )
)

主咖啡

class AddressBook
  constructor: ->
    return []

class Proper
  uppercase: (word) ->
    word[0].toUpperCase().concat(word.slice(1))

  constructor: () ->
    return (name) ->
      words = name.toString().split(" ")
      return words.map(@uppercase).join(" ")


angular.module('AddressBook', new AddressBook())
.filter('proper', [Proper])

更新

我认为类方法“大写”更适合这种情况,并且在“main.coffee”中稍作改动即可通过测试。

class AddressBook
  constructor: ->
    return []

class Proper
  @uppercase: (word) ->
    word[0].toUpperCase().concat(word.slice(1))

  constructor: () ->
    return (name) ->
      words = name.toString().split(" ")
      return words.map(Proper.uppercase).join(" ")


angular.module('AddressBook', new AddressBook())
.filter('proper', [Proper])

但如果我真的需要实例方法,如何让测试通过?

【问题讨论】:

    标签: javascript angularjs coffeescript mocha.js karma-runner


    【解决方案1】:

    这是因为 CoffeeScript 处理 this 关键字的方式。在您的构造函数中,您将返回一个函数,但在该函数内部访问变量@uppercase。在这种情况下,您希望 this 关键字(即 @)引用正在构造的对象实例。但是,this 总是引用调用函数的对象,在这种情况下是 undefined

    要修复它,只需使用粗箭头,CoffeeScript 将按预期设置this 关键字:

    class Proper
      uppercase: (word) ->
        word[0].toUpperCase().concat(word.slice(1))
    
      constructor: () ->
        return (name) =>
          words = name.toString().split(" ")
          return words.map(@uppercase).join(" ")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-05
      • 1970-01-01
      相关资源
      最近更新 更多