Как протестировать серверную функцию в Meteor, не включая ее в глобальное пространство имен
В моем файле на стороне сервера у меня определены две функции, для которых я хочу написать контрольные примеры, которые находятся в файле в каталоге 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()
)
)
Как можно вызвать серверную функцию func(calcSha1Hash) в моем тестовом примере в Meteor
1 ответ
Решение
Если для этого нет специфичного для метеора способа, вы можете реализовать решение из раздела Как тестировать частные функции в 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
}())
У кого-то может быть что-то лучше, но это только начало.