我正在通过O'reilly的 web开发与节点和表达进行工作。刚刚引入了Mocha测试,我正在尝试运行2个测试。首先是验证页面标题的全局测试,第二个是检查链接到联系页面的页面特定测试。 当我测试页面时,Mocha加载,但是没有测试运行,因为我得到“pass:0 failed:0”。
我的主应用文件中包含以下代码:
app.use(function(req,res,next){
res.locals.showTests = app.get('env') !== 'production' && req.query.test === '1';
next();
});
app.get('/', function(req, res){
res.render('home');
});
app. get('/about', function(req,res){
res.render('about', {fortune: fortune.getFortune(),
pageTestScript: '/qa/tests-about.js'
});
});
这是我的tests-about.js
suite('"About" Page Tests', function(){
test('page should contain link to contact page', function(){
assert($('a[href="/contact"]').length);
});
});
这是我的tests-global.js
suite('Global Tests', function(){
test('page has a valid title', function(){
assert(document.title && document.title.match(/\S/) &&
document.title.toUpperCase() !=== 'TODO');
});
});
这是我的主要模板文件(把手)
<!doctype html>
<html>
<head>
<title>Random Pixel Media</title>
{{#if showTests}}
<link rel="stylesheet" href="/vendor/mocha">
{{/if}}
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
</head>
<body>
<header><a href="/"><img src="/img/logo.png" alt="Random Pixel Logo" /></a></header>
{{{body}}}
{{#if showTests}}
<div id="mocha"></div>
<script src="/vendor/mocha.js"></script>
<script src="/vendor/chai.js"></script>
<script>
mocha.ui('tdd');
var assert = chai.assert;
</script>
<script src="/qa/tests-global.js"></script>
{{#if pageTestScript}}
<script src="{{pageTestScript}}"></script>
{{/if}}
<script>mocha.run();</script>
{{/if}}
</body>
</html>
根据这本书,当我访问about页面时,我应该看到2个套件和1个失败,但正如我所说,我看到一个空白的子弹点,传递:0并失败:0 任何有助于理解我所遗漏的内容的人都将不胜感激。
答案 0 :(得分:0)
自您发布此消息已有一段时间了。 我正在看书,我也有同样的问题。 我意识到这是因为我打开了:
localhost:3000/?test=1
代替:
localhost:3000/about?test=1
答案 1 :(得分:0)
这本书是正确的。这可能是文件或结构名称的问题。我有类似的问题,但是文件名错误。例如“测试”和“测试”。