我有一个现有的应用程序,在浏览器中广泛使用IIFE。我试图将一些单元测试引入到代码中,并保持对代码库新更新的IIFE模式。但是,我甚至都无法编写一个能够访问该代码的测试。例如,我在整个代码库中都看到了这种类型的逻辑:
var Router = (function (router) {
router.routeUser = function(user) {
console.log("I'm in! --> " + user)
};
return router;
})(Router || {});
然后,在标记中使用 script 标签包含 JS 文件:
<script src="js/RouteUser.js"></script>
在生产代码中,它被这样称为:
Router.routeUser(myUser)
我的问题是,如何编写一个测试来测试方法routeUser?我在Mocha测试中尝试了以下代码:
var router = require('../../main/resources/public/js/RouteUser');
suite('Route User Tests', function () {
test('Route The User', function () {
if (!router)
throw new Error("failed!");
else{
router.routeUser("Me")
}
});
});
但是我遇到了一个异常:
TypeError: router.routeUser is not a function
at Context.<anonymous> (src\test\js\RouteUser.test.js:8:20)
然后我尝试返回该方法,但仍然出现相同的错误:
var Router = (function (router) {
return {
routeUser: function (user) {
console.log("I'm in! --> " + user)
}
}
}
)(Router || {});
有人能指引我正确的方向吗?
require
这个文件,它是否有任何module.exports
? - Kosrequire()
。这已经有点暗示你想使用Node运行单元测试了。但是,是在浏览器中运行Mocha呢还是在Node中呢? - Kos