如何在Meteor中测试服务器端功能而不将其包含在全局命名空间中

时间:2015-07-17 17:28:16

标签: meteor mocha-web-velocity

在我的服务器端文件中,我定义了两个函数,我想编写测试用例,这些测试用例位于tests目录中的一个文件中。

〜PRJ_DIR /服务器/ file1.coffee

calcSha1Hash = (params) ->
    .... logic...
anotherFunc = () ->
    ..somelogic..
    x = calcSha1Hash(params)

〜PRJ_DIR /测试/服务器/ file1.coffee

MochaWeb?.testOnly () ->
  describe.only("Hash generation.  ", () ->
    it(" calcSha1Hash returns Hash.", (dn) ->
      dataDict = {email: 'johndoe@gmail.com'}
      hash = calcSha1Hash (dataDict)
      chai.assert.isDefined(hash)
      dn()
    )
  )

如何在Meteor的测试用例中调用服务器端func(calcSha1Hash)

1 个答案:

答案 0 :(得分:0)

除非有特定于流媒体的方法,否则您可以从How to Unit Test Private Functions in JavaScript

实施解决方案

您需要拥有一个全局变量(类似TestAPI)。然后在闭包内添加函数,以便从任何地方访问它们。

以下是文章中的一个例子:

var myModule = (function() {

  function foo() {
    // private function `foo` inside closure
    return "foo"
  }

  var api = {
    bar: function() {
      // public function `bar` returned from closure
      return "bar"
    }
  }

  /* test-code */
  api._foo = foo
  /* end-test-code */

  return api
}())

有人可能会有更好的东西,但这是一个开始。