繁体   English   中英

RequireJS和Mocha

[英]RequireJS and Mocha

我有一个使用RequireJS的网络应用程序。 这是我的js/main.js文件:

require.config({
    baseUrl: 'js/',
    paths: {
        jquery: 'libs/jquery/jquery',
        lodash: 'libs/lodash/lodash',
        backbone: 'libs/backbone/backbone',
        // [other dependencies...]
    }
});

require(['views/AppView'], function (AppView) {
    var app_view = new AppView;
});

这是我的js/views/AppView.js文件:

define([
    'jquery',
    'underscore',
    'backbone',
    'joint',
    'views/ProjectView',
    'models/Command',
    'views/detailsview',
    'views/newcellview'
], function ($, _, Backbone, joint, ProjectView, Command, DetailsView, NewCellView) {
    var app_view = {stub: 'stub'};
    return app_view;
});

最后是我的AppViewTest.js mocha js/test/AppViewTest.js运行的AppViewTest.js文件:

var assert = require('assert');
var requirejs = require('requirejs');

describe('AppView', function() {
    var app_view;
    beforeEach(function (done) {
        requirejs(['../views/AppView.js'], function (AppView) {
            app_view = new AppView;
        });
    });
    it('should be [...]', function() {
        assert.equal(app_view, ...);
    });
});

我收到以下错误:

1) AppView views "before each" hook:
   Uncaught Tried loading "jquery" at /usr/local/lib/node_modules/mocha/bin/jquery.js then tried node's require("jquery") and it failed with error: Error: Cannot find module 'jquery'

您可以通过以下方式开始测试:

var assert = require('assert');
var requirejs = require('requirejs');

然后开始对requirejs进行调用,但是这里没有配置RequireJS的内容。

如果您剪切并粘贴require.config叫你在你的main.js到您的测试文件中,将配置你的测试加载相同的文件,你对你的日常应用都有。

另一种方法是:

before(function (done) {
    requirejs(['full-path-to/main'], function () {
        requirejs(['../views/AppView'], function (AppView) {
            app_view = new AppView;
            done();
        });
    });
});

关键是在加载AppView之前先加载配置。 还要注意,您需要调用done ,并且我已经将beforeEach更改为before因为不需要在每次测试之前重新加载它。 (当我诱使您在beforeEach之前使用它时,我心里一溜。我的错。)

我还从您的requirejs调用中删除了.js ,因为您不应该使用.js 有时是必要的,但除非您能解释为什么需要它,否则不应使用它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM