У меня есть приложение nodejs, которое имеет код на стороне клиента с backbonejs и requirejs. Я хочу протестировать клиентский код на моем сервере nodejs, используя mocha.test backbonejs with mocha on nodejs
Мой мокко тест файл: тест/view.coffee
requirejs = require 'requirejs'
global.define = requirejs
requirejs.config
nodeRequire: require
baseUrl: '../public/javascripts/libs/'
paths:
jquery: "jquery"
Underscore: "underscore"
Backbone: "backbone"
shim:
'jquery':
exports: '$'
'Underscore':
exports: '_'
'Backbone':
deps: ['jquery', 'Underscore']
exports: 'Backbone'
requirejs ['../public/javascripts/views/test_view'], (TestView) ->
describe 'TestView', ->
view = new TestView()
Backbonejs файл, который будет испытываться: общественные/JavaScripts/просмотров/test_view.coffee
define [
'Backbone'
], (Backbone) ->
class TestView extends Backbone.View
initialize: ->
...
TestView
Публично/JavaScripts/libs У меня есть мини-(не AMD) версии jquery, backbone и underscore.
Когда я запускаю мой тест, я получаю следующее сообщение об ошибке:
Error: Calling node's require("../public/javascripts/views/test_view")
failed with error: Error: Calling node's require("Underscore")
failed with error: Error: Cannot find module 'Underscore'
at /node_modules/requirejs/bin/r.js:2262:27
Как-то пути атрибут requirejs.config в тесте/view.coffee не читается. Если я удаляю Backbone: «backbone» из путей, я не получаю сообщение об ошибке, отсутствующее в модуле «Backbone». Я не устанавливал Backbone и Underscore на сервере nodejs.
Edit: Исправлена проблема с пути, изменив requirejs.config BaseUrl 'Общедоступный/JavaScripts/просмотров/test_view'. Requirejs не использует путь к файлу (test/view.coffee) для блока baseUrl. Для части requirejs ['...'], (TestView) я должен использовать путь к файлу test/view.coffee.
Когда я запускаю мой тест с мокко я получаю следующее сообщение об ошибке:
throw e; // process.nextTick error, or 'error' event on first tick
^
Error: Calling node's require("../public/javascripts/views/test_view")
failed with error: TypeError: Object #<Object> has no method 'load'
Edit: Я забыл упомянуть, что я добавил «нефритовый шаблоны/test_template!» К моему test_view. Я удалил его, и теперь мокка запускает тест. Но я получаю ошибку:
TypeError: object is not a function
at Object.CALL_NON_FUNCTION_AS_CONSTRUCTOR (native)
строку:
view = new TestView()
вызывает ошибку.
Благодарим вас за ответ. Я исправил ошибку, обновив requirejs.config baseUrl: до 'public/javascripts/libs /'. Я уточню свой вопрос. – bekite