我已经创建了一个Ember测试助手,它可以正常工作并在Ember qunit测试中成功使用,但每次JSHint运行时总是会给我一个错误,说我的测试助手没有定义。
我需要做些什么来注册我的测试助手吗?如果没有,有没有办法可以在JSHint中抑制这个错误?
这是我的Ember测试助手。它没有给出运行时错误,我的测试成功通过,我甚至设置了一个断点,并使用调试器逐步完成它,所以我知道JSHint错误是误报。
Ember.Test.registerHelper('hasText', function (app, selector, text) {
...
});
这是在custom.js帮助文件中定义的,该文件正在由Ember-cli为我生成的/tests/test-helper.js文件中导入。
import resolver from './helpers/resolver';
import { setResolver } from 'ember-qunit';
import testing from './helpers/custom';
setResolver(resolver);
document.write('<div id="ember-testing-container"><div id="ember-testing"></div></div>');
我得到的错误是:
.../tests/acceptance/outages-test.js: line 20, col 11, 'hasText' is not defined.
.../tests/acceptance/outages-test.js: line 22, col 10, 'hasText' is not defined.
这是验收测试文件(第20行和第22行是靠近底部的两条'ok'行):
import Ember from 'ember';
import startApp from '../helpers/start-app';
var App;
module('Acceptance: Outages', {
setup: function() {
App = startApp();
},
teardown: function() {
Ember.run(App, 'destroy');
}
});
test('...', function() {
visit('/');
andThen(function() {
if (route('index').get('controller.outages.content').length > 0) {
ok(!hasText('.warning', 'No outages planned'), 'we have outages');
} else {
ok(hasText('.warning', 'No outages planned'), 'we have no outages');
}
});
});
我不确定我还能做什么;我不希望这些错误继续污染我的JSHint输出。
已编辑以包含错误并测试它们是否正在发生。
答案 0 :(得分:3)
我能够让这个工作。
要注册使用Ember.Test注册的辅助函数,我还需要告诉JSHint它们。为此,我将助手功能添加到了预先设定的状态。数组位于/ tests根文件夹中的.jshintrc文件中。
{
"predef" : [
"hasText",
...
]
}
请注意,JSHint将开始在与要删除的文件相同的目录中查找此文件。如果没有找到,它将在目录树中向上移动一级到文件系统根目录,因此如果在任何中间文件夹中有任何.jshintrc文件,则会使用这些文件。
感谢@torazaburo 指出我正确的方向让这个工作正常。
答案 1 :(得分:2)
JSHint无法知道hasText
已定义,并且在Ember.Test.registerHelper
提供的全局命名空间中。您可以做的最好是/* global hasText */
或同等内容,例如将其添加到.jshintrc
。