0

在我的服务器端文件中,我定义了两个函数,我想为它们编写驻留在测试目录中的文件中的测试用例。

~PRJ_DIR/server/file1.coffee

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

~PRJ_DIR/tests/server/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)

4

1 回答 1

0

除非有特定于流星的方法来执行此操作,否则您可以实现如何在 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
}())

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

于 2015-07-17T19:31:18.803 回答