繁体   English   中英

单元测试时如何模拟特定的RequireJs依赖关系

[英]How to mock specific RequireJs dependencies while unit testing

我在浏览器中使用qUnit对我的宠物项目进行单元测试。 我正在进行单元测试的模块如下所示:

// Filename: views/base.js

define(['../manager'], function(Manager){

  return Backbone.View.extend({

   //...

});

我想模拟依赖项"../manager" ),我尝试使用testr.jsSquire.js两者都建议将路径修改为配置的路径。

例:

testr.config({
    root: '../',
    baseUrl: 'src',
    stubUrl: 'tests/mocks',
    ignore: ['jquery', 'underscore', 'backbone'],
    whitelist: ['tests/unit']
});

运行此代码后,我看到的问题是我正在测试的模块(base.js)以及单元测试模块也被模拟了,因为它们作为依赖项包含在单元测试运行器中:

define([
  'tests/unit/test-unit',
  'tests/unit/views/base-view-unit',
], function(Test, BaseViewTest){

// ...

});

控制台输出:

http://localhost:63342/project/tests/mocks/js/views/base.stub.js 404 (Not Found)
http://localhost:63342/project/tests/mocks/tests/unit/views/base-view-unit.stub.js 404 (Not Found)

我可以将这两个文件添加到白名单中,但不能解决我的问题。

我想我的问题是:如何模拟当前正在测试的文件的dep,而不模拟包含在单元测试运行器中的文件本身?

好的,我在这篇文章中找到了可能的答案,说我需要使用单独的config.js从不同的路径加载模拟依赖项。 Yu

暂无
暂无

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

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