4

我想用 Yeoman 测试我的 Angular 应用程序,它使用 Mocha 和 Phantom 和 Chai 进行断言。但是,当我运行任何示例测试用例时,测试用例无法正常运行,它显示 PhantomJs 由于缺少 Mocha run() 调用而超时。非角度用例在测试用例中运行良好。

<!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>
4

1 回答 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!');
      });
});
于 2014-06-26T03:23:13.090 回答