QUnit.m 将 QUnit.js 语法引入到 SenTestingKit,用于测试 Objective-C 项目。如果您试图将 JavaScript 库转移到 Objective-C 或需要一个更熟悉的测试语法,这将很有用。
我编写这个是为了帮助我把 Underscore.js 转移到 _.m,并使 Objective-C 更有脚本感觉 Subjective-Script,因此您将在那些项目的测试中找到一些很好的例子。
注意:这个库还处于早期阶段,所以请提交包含相应测试的 pull 请求以修复任何问题,并将功能集提升到 QUnit.js 的水平!
equal
equal(AI(1,2,3).reverse().join(@","), @"3,2,1", @"reverse works");
strictEqual
strictEqual(_.chain(array).find(^B(N* n) { return n.I > 2; }).N, N.I(3), @"should return first found `value`");
deepEqual
_WrappedBlock wrapped = _.wrap(noop, ^A*(_WrappedBlock fn, id arg1, ...){ ARGS_AO(arguments, arg1); return A.newNSO(fn).concat(arguments); });
A* ret = wrapped(AO(@"whats", @"your"), @"vector", @"victor", nil);
deepEqual(ret, AO(noop, AO(@"whats", @"your"), @"vector", @"victor"), @"deep wrapping");
notEqual
notEqual(AI(1,2,3).reverse().join(@","), @"1,2,3", @"reverse works");
ok
ok(OKV({@"int", N.I(1)}, {@"float", N.F(2.0)}).hasOwnProperty(@"int"), @"has an int");
raises
raises(^{ _.reduce(A.new, ^(N* memo, N* num, ...){ return memo; }, 0); }, @"TypeError", @"throws an error for empty arrays with no initial value");
asyncTest
asyncTest(^{
__block BOOL called1 = false;
SSTimeout* timeout1 = SS.setTimeout(^{ called1 = true; }, NSEC_PER_SEC*1);
SS.clearTimeout(timeout1);
__block BOOL called2 = false;
SS.setTimeout(^{ called2 = true; start(); }, NSEC_PER_SEC*2);
});
要运行示例项目;克隆仓库,然后从项目目录运行 pod install
。
Kevin Malakoff, [email protected]
QUnit.m 在 MIT 许可证下可用。有关更多信息,请参阅 LICENSE 文件。