使用Mocha和Chai测试Angular

4
我想使用Yeoman中的Mocha和Phantom以及Chai进行单元测试我的Angular应用程序。但是,当我运行任何样例测试用例时,测试用例无法正常运行,显示“PhantomJs超时,原因是缺少Mocha run()调用”。非Angular用例在测试用例中正常工作。
<!doctype html>
<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  <title>Mocha Spec Runner</title>
  <link rel="stylesheet" href="lib/mocha/mocha.css">
</head>
<body>
  <div id="mocha"></div>
  <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.0.5/angular.min.js"></script>
  <script src="lib/mocha/mocha.js"></script>
  <script>mocha.setup('bdd')</script>
  <script src="lib/chai.js"></script>
  <script>
      expect = chai.expect;
      assert = chai.assert;
  </script>
    <script>
        function addSum(num1, num2) {
            return num1 + num2;
        }
    </script>
  <script>
  (function() {
    describe('Give it some context', function() {
        it('should simulate promise', inject(function ($q, $rootScope) {
            assert.notStrictEqual(3, '3', 'no coercion for strict equality');
         /*   var deferred = $q.defer();
            var promise = deferred.promise;
            var resolvedValue;

            promise.then(function(value) { resolvedValue = value; });
            expect(resolvedValue).to.be.undefined;

            // Simulate resolving of promise
            deferred.resolve(123);
            // Note that the 'then' function does not get called synchronously.
            // This is because we want the promise API to always be async, whether or not
            // it got called synchronously or asynchronously.
            expect(resolvedValue).to.be.undefined

            // Propagate promise resolution to 'then' functions using $apply().
            $rootScope.$apply();
            expect(resolvedValue).to.equal(123);*/
        }));
    });
  })();
  </script> 



  <!-- trigger the mocha runner -->
  <script src="runner/mocha.js"></script>

</body>
</html>
1个回答

2
你尝试过使用量角器吗?它是专门为测试端到端的AngularJS应用程序开发的(由AngularJS团队开发)。https://github.com/angular/protractor 它有自己的运行器,你可以通过以下方式安装:
npm install protractor -g

然后,跑步者被执行:
protractor /configfile.cfg

不需要HTML页面来运行测试。
配置文件非常简单(您可以在源代码中看到选项)。
有了这个,您将定义规范为:
// myTest.js
describe('angularjs homepage', function() {
    it('should greet the named user', function() {
        browser.get('http://www.angularjs.org');
        element(by.model('yourName')).sendKeys('Julie');

        var greeting = element(by.binding('yourName'));

        expect(greeting.getText()).toEqual('Hello Julie!');
      });
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接