首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我得到这个角度模拟错误和摩卡测试没有运行。

为什么我得到这个角度模拟错误和摩卡测试没有运行。
EN

Stack Overflow用户
提问于 2016-02-17 15:41:14
回答 1查看 609关注 0票数 2

我得到了的确切错误,如(window.beforeEach \ window.setup)不是一个函数。然而,修复没有运行这里是教程系列的作者甚至提到了相同的修复。

以下是Tuts+作者的修补程序:

它只是将angular-mock脚本标记放在MochaiChai脚本之后。我这样做的理由如下:

test/index.html

代码语言:javascript
复制
<!DOCTYPE html>
<html lang="en">
<head>
    <title>Mocha Spec Runner</title>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <link rel="icon" href="../app/favicon.ico">
    <link rel="apple-touch-icon" href="../app/assets/imgs/apple-touch-icon.png">
    <link href="bower_components/mocha/mocha.css" rel="stylesheet">
</head>

<body>

    <div id="mocha"></div>

    <script src="../bower_components/angular/angular.js"></script>
    <script src="../bower_components/mocha/mocha.js"></script>
    <script src="../bower_components/chai/chai.js"></script>
    <!-- see Angular-mocks is here :( -->
    <script src="../bower_components/angular-mocks/angular-mocks.js"></script>

    <script>
        mocha.setup('bdd');
    </script>

    <script src="main.spec.js"></script>

    <script>
        mocha.run();
    </script>

</body>
</html>

我的main.spec.js文件

代码语言:javascript
复制
/**
 * @name Mocha Test Runner
 * @desc Describes and runs our dashboard tests
 */

var assert = chai.assert;
var expect = chai.expect;

// This Test is designed to fail on purpose
describe('User Login', function() {
    console.log('User Login');
    describe('Login Failed', function() {
        console.log('Login Failed');
        if ('Incorrect login should fail', function() {
            module('loginController')
            inject(function($injector) {
                apiFactory = $injector.get('ApiFactory');
            });

            expect(apiFactory).to.be.an('number');
        });
    });    
});

我的任务

代码语言:javascript
复制
gulp.task('serve', function() {
    return browserSync.init({
        notify : false,
        port   : 3333,
        server: {
            baseDir: ['app'],
            routes: {
                '/bower_components' : 'bower_components'
            }
        }
    });
});

gulp.task('serve-test', function() {
    browserSync.init({
        notify : false,
        port   : 4444,
        server: {
            baseDir: ['test', 'app'],
            routes: {
                '/bower_components' : 'bower_components'
            }
        }
    });
});
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-17 19:35:35

index.html文件中,在调用mocha.setup('bdd')之前包含angular-mocks.js脚本。angular-mocks.js被实现为一个立即调用的函数表达式,它试图使用window.beforeEach。(https://github.com/angular/bower-angular-mocks/blob/master/angular-mocks.js#L2586)

但是,mocha.js不会立即被调用,必须使用mocha.setup函数进行初始化,以便将其魔力添加到运行时环境中。

尝试颠倒这些脚本标记的顺序,以便在mocha.js之前包含并初始化angular-mocks.js

代码语言:javascript
复制
    <script src='bower_components/mocha/mocha.js'></script>
    <script src='bower_components/chai/chai.js'></script>
    <script>
        mocha.setup('bdd');
    </script>
    <script src="bower_components/angular-mocks/angular-mocks.js"></script>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35461233

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档