AVA 测试问题
AVA testing problems
我正在尝试使用 AVA 编写测试,但我似乎无法让它工作。 fn
通过我的所有函数传递回调函数,并在完成所有操作后调用它。我的测试是
import test from 'ava';
import fn from './index.js';
test('NonLiteral && Literal', function (t) {
fn('test.txt', '', function (res) {
console.log(res);
t.is(res, '');
});
});
分辨率是
This is a test
How is it going
So far!!!
但它说我的测试通过了。我一直在关注这个测试。这是我一直在看的片段
test('throwing a named function will report the to the console', function (t) {
execCli('fixture/throw-named-function.js', function (err, stdout, stderr) {
t.ok(err);
t.match(stderr, /'[Function: fooFn]/);
// TODO(jamestalmage)
// t.ok(/1 uncaught exception[^s]/.test(stdout));
t.end();
});
});
有人可以向我解释我做错了什么吗?
很抱歉造成混乱,不幸的是,您正在查看的单元测试使用 tap
,而不是 AVA。(AVA 不将自己用于测试...然而)。
我猜fn
是异步的。在这种情况下,您可能希望使用 test.cb
.
test.cb('NonLiteral && Literal', function (t) {
fn('test.txt', '', function (res) {
console.log(res);
t.is(res, '');
t.end();
});
});
现在,看起来fn
可能会多次调用该回调,但是多次调用t.end()
是错误的。如果是这样,您将需要执行以下操作:
test.cb('NonLiteral && Literal', function (t) {
var expected = ['foo', 'bar', 'baz'];
var i = 0;
fn('test.txt', '', function (res) {
t.is(res, expected[i]);
i++;
if (i >= expected.length) {
t.end();
}
});
});
最后,我鼓励你考虑实现一个基于承诺的 api,这样你就可以利用async
函数和await
关键字。它最终创建了比回调更干净的代码。如果要多次调用回调,请考虑可观察量。AVA 文档中记录了两者的测试策略。关于可观察量的更多信息很容易通过谷歌搜索找到。
感谢您尝试 AVA。继续提出这些问题!
相关文章:
- 我的CSS/Javascript下拉菜单测试代码出了什么问题
- AngularJS-用$qdons'无法解决测试问题
- 单元测试窗口位置分配的角度问题
- angular单元测试http请求问题
- 在我的情况下,如何解决我的单元测试问题
- AVA 测试问题
- 在 angularjs 控制器中对承诺调用进行单元测试时遇到问题
- 使用茉莉花测试角度控制器 - 模块问题
- 我正在编写代码进行在线测试,在自动提交时遇到问题
- 测试 IE8 兼容性问题
- 测试 HTML Web 表单时出现问题
- 茉莉花测试骨干,范围问题
- 测试 XML 元素是否存在时遇到问题
- 因果报应可能运行了一组错误的测试——如何解决这个问题
- react插件测试utils createElement出现问题
- Angular2单元测试Http MockBackend问题-无法读取mergeOptions中未定义的属性合并
- 使用JavaScriptJasmine测试html文件时出现的问题
- 我创建了一个测试,修改了我在网上找到的代码,但我有一个小问题
- 来自全局函数的Angular问题,自测试版1.3.0b15以来中断.需要帮助
- 如果语句测试=true但获胜,则会出现奇怪的javascript问题't执行