Unit testing 在Browserify中删除单元测试所需的模块

Unit testing 在Browserify中删除单元测试所需的模块,unit-testing,jasmine,sinon,browserify,Unit Testing,Jasmine,Sinon,Browserify,好的,我刚开始进入Browserify,在编写jasmine测试时遇到了一些问题。基本上,我有一个主干视图,其中包含嵌套视图,现在出于测试目的,我显然不想在这里测试嵌套视图,因为它正在使用自己的单元测试进行测试。我想做的就是把它删掉,检查它是否被正确调用 所以我有以下几点 nestedView = require('./nested_view.coffee') module.exports = class MainView extends Backbone.View initializ

好的,我刚开始进入Browserify,在编写jasmine测试时遇到了一些问题。基本上,我有一个主干视图,其中包含嵌套视图,现在出于测试目的,我显然不想在这里测试嵌套视图,因为它正在使用自己的单元测试进行测试。我想做的就是把它删掉,检查它是否被正确调用

所以我有以下几点

nestedView  = require('./nested_view.coffee')

module.exports = class MainView extends Backbone.View
   initialize:(collection, attr)->
     NestedView = if _.isUndefined(attr.Stub) then NestedView else attr.Stub
     @nested_view = new NestedView()
然后在我的测试中:

it "Tests my nested view", ->
  Stub =  sinon.stub()
  @mainview  = new MainView(collection:@collection, {SV:Stub})
  expect(Stub).toHaveBeenCalledOnce()
虽然这确实有效,但感觉有点糟糕,因为我不得不在脚本中添加代码来运行测试


有人知道更好的方法吗?

你应该查看rewireify或proxyquireify。它们将允许您在测试中操纵“nestedView=require('../nested_view.coffee')”语句。但是,是的,对于每个想要模拟的require语句,您都必须这样做。你可能还想看看Facebook的笑话,它会自动模仿你所有的require语句。

可能重复的Hmm不确定我是否完全同意虽然方法相似,但requirejs imo中有更好的方法。我也不确定答案是否能解决我的问题,这是一个模型,而不是元素。Facebook的玩笑有很多[主要]问题: