我有一個使用backbonejs和requirejs構建客戶端代碼的nodejs應用程序。 我想使用摩卡在我的nodejs服務器上測試客戶端代碼。在nodejs上使用mocha測試skeletonjs
我的摩卡測試文件: 測試/ 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文件進行測試: 公共/ Java腳本/視圖/ test_view.coffee
define [
'Backbone'
], (Backbone) ->
class TestView extends Backbone.View
initialize: ->
...
TestView
在公共/ JavaScript的/ libs我有jquery,主幹和下劃線的縮小(而非AMD)版本。
當我運行我的測試,我得到以下錯誤消息:
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'缺失。 我沒有在nodejs服務器上安裝Backbone和Underscore。
編輯: 通過將requirejs.config baseUrl更改爲'public/javascripts/views/test_view'來修復路徑問題。 Requirejs沒有使用baseUrl塊的文件路徑(test/view.coffee)。對於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'
編輯: 我忘了提,我已經添加了「玉模板/ 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