![](/img/trans.png)
[英]Angular/Mocha/Chai - initialize controller for unit testing?
[英]Testing Angular With Mocha and Chai
我想用Yeoman測試我的角度應用程序,該應用程序將Mocha與Phantom和Chai一起使用來聲明。 但是當我運行任何樣本測試用例時,測試用例無法正常運行,這表明由於缺少Mocha run()調用而導致PhantomJs超時。非角度用例在測試用例中運行正常。
<!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>
您是否嘗試過使用量角器? 它是專門為測試端到端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!');
});
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.