当前位置: 首页 > 知识库问答 >
问题:

在nodejs上使用mocha测试backbonejs

松鸣
2023-03-14

我有一个nodejs应用程序,它具有使用backbonejs和在js构建的客户端代码。我想使用mocha在我的nodejs服务器上测试客户端代码。

我的摩卡测试文件:test/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()

要测试的backonejs文件:public/javascripts/views/test_view.coffee

define [
  'Backbone'
], (Backbone) ->
  class TestView extends Backbone.View
    initialize: ->
      ...
  TestView

在public/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的路径属性。测试/视图中的配置。咖啡不可读。如果从路径中删除主干:“主干”,则不会收到模块“主干”丢失的错误消息。我没有在nodejs服务器上安装主干和下划线。

编辑:通过更改requirejs修复了路径问题。将baseUrl配置为“public/javascripts/views/test_view”。Requirejs没有使用baseUrl块的文件路径(test/view.coffee)。对于requirejs['…',(TestView)部分,我必须使用test/view的路径。咖啡档案。

当我用摩卡咖啡运行我的测试时,我得到以下错误:

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_view中添加了“玉!模板/test_template”。我删除了它,现在摩卡正在运行测试。但是我得到了错误:

TypeError: object is not a function
  at Object.CALL_NON_FUNCTION_AS_CONSTRUCTOR (native)

该行:

view = new TestView()

导致了错误。

共有1个答案

张星洲
2023-03-14

这里的问题是,在服务器上,RequireJS 回退到 node 的 require()。一个可能的解决方案是安装带有NPM的Backbone,并将symlink node_modules/backbone/backbone.js到public/lib/backbone.js。然后,您可以使用节点或 RequireJS 的 require() 来要求骨干网。

 类似资料:
  • 本文向大家介绍NodeJS测试框架mocha入门教程,包括了NodeJS测试框架mocha入门教程的使用技巧和注意事项,需要的朋友参考一下 NodeJS里最常用的测试框架估计就是mocha了。它支持多种node的assert libs, 同时支持异步和同步的测试,同时支持多种方式导出结果,也支持直接在browser上跑Javascript代码测试。 本文示例大多源于官网示例,部分示例结合需要或自己

  • 要运行Mocha的测试,您需要GNU Make或兼容; Cygwin应该工作。 $ cd /path/to/mocha $ npm install $ npm test 要使用其他记者: $ REPORTER=nyan npm test

  • 问题内容: 我正在使用React / Redux / Webpack开发一个可运行的Web应用程序,现在开始将测试与Mocha集成在一起。 我遵循Redux文档中有关编写测试的说明,但是现在我的webpack别名遇到了问题。 例如,看看我的动作创建者之一的此测试的imports部分: 正如评论所暗示的那样,mocha在引用别名依赖项时无法解析我的导入语句。 因为我还是Webpack的新手,所以这是

  • 问题内容: 我正在使用JavaScript测试运行程序“摩卡”。 我的测试失败了,因此我将使用进行调试。 但是运行测试时,没有输出(仅来自Mocha的测试结果)。看来Mocha已捕获并抑制了我的输出! 如何让Mocha显示输出?(对于失败的测试)? 编辑: 抱歉!- 在测试期间可以正常工作!我肯定一直期望它抑制输出,而且我没有正确检查自己的代码。感谢您的回应。所以…话虽如此…也许抑制通过测试的输出

  • 目标 建立一个 lesson6 项目,在其中编写代码。 main.js: 其中有个 fibonacci 函数。fibonacci 的介绍见:http://en.wikipedia.org/wiki/Fibonacci_number 。 此函数的定义为 int fibonacci(int n) 当 n === 0 时,返回 0;n === 1时,返回 1; n > 1 时,返回 fibonacci(

  • 自动化测试将被用于进一步的任务中,并且还将被广泛应用在实际项目中。 为什么我们需要测试? 当我们在写一个函数时,我们通常可以想象出它应该做什么:哪些参数会给出哪些结果。 在开发期间,我们可以通过运行程序来检查它并将结果与预期进行比较。例如,我们可以在控制台中这么做。 如果出了问题 —— 那么我们会修复代码,然后再一次运行并检查结果 —— 直到它工作为止。 但这样的手动“重新运行”是不完美的。 当通