如何在 Angular / Karma 单元测试中忽略 run.js?

How to ignore a run.js in Angular / Karma unit testing?

我有一个文件 run.js 包含:

window.map.run([
    '$rootScope', '$location', 'cache', 'userCache',
    function($rootScope, $location, cache, userCache) {
        userCache.checkSession().then(function(result) {
            if(result.userId) {
                cache.set('login', 'successfulLogin', true);
                if($location.path() !== '/patients') {
                    $location.path('/patients');
                }
            }
        });
    }
]);

这会在应用加载时运行。这通常是很好的行为。但是当我对控制器进行单元测试时,一切都变得一团糟。我无法弄清楚如何 spymock 这个所以它是错误的。有什么想法吗?

谢谢!

您可以通过在 karma.conf 文件中指定相关模式来排除 run.js

**/!(run).js

或者您可以将您的应用拆分为更小的模块,并在单元测试期间仅加载相关模块。