对于我正在开发的项目,我一直在使用
JavaScript库的大型程序.我的代码的主要逻辑分为多个commonjs模块.我使用谷歌闭包将模块组合到我的AngularJS应用程序中使用的一个输出js文件.
我遇到的问题是试图用testacular进行测试.我收到的错误是未捕获的ReferenceError:require没有定义.正在发生,因为不像google关闭,testacular不了解commonjs模块.有几个工作可以做,但我希望使其工作,而不必重组我的代码.
>我可以重组结构模块,使我不再使用commonjs.我不喜欢这样,因为感觉像倒退一样.我希望我的代码是模块化的.
>我可以在google关闭中编译的js上运行testacular.我不介意这样做,但是我没有能够触发所有事情来处理文件更改. Testacular可以重新运行文件更改,但我还没有看到任何使谷歌关闭重新编译更改.
>最后,我可以在testacular中启用commonjs模块.理想情况下,这是我想去的方式,但可能不是最简单的方法.
有其他人遇到类似的问题吗?我打算尝试不同的事情;我只是不想要任何东西.
javaclassstreamreader.spec.js:
"use strict" var JavaClassStreamReader = require('../javaclassstreamreader.js').JavaClassStreamReader; describe('javaclassstreamreader',function() { it('reader can be constructed',function() { var dataView = { byteLength : 0 }; //FIXME load dataView var reader = new JavaClassStreamReader(dataView); expect(reader.dataView).toBe(dataView); expect(reader.offset).toBe(0); expect(reader.maxOffset).toBe(0); }); });
javaclassstreamreader.js:
function JavaClassStreamReader(dataView,initialOffset,maxBytesToRead) { this.dataView = dataView; this.offset = initialOffset || 0; this.maxOffset = this.offset + (maxBytesToRead || this.dataView.byteLength); } //... code trucated ...
解决方法
似乎有一个
issue与Testacular.
你能尝试以下几点:
清除npm缓存:npm缓存清理>安装另一个版本的testacular:npm install -g testacular@0.5.6