【发布时间】:2016-04-12 03:42:51
【问题描述】:
注意,相关How to test if jQuery 3.0 beta is Promises/A+ compatible in browser?
例如,promises-tests 可以在promises-tests/lib/tests/2.1.2.js 找到其中一项测试
"use strict";
var assert = require("assert");
var testFulfilled = require("./helpers/testThreeCases").testFulfilled;
var adapter = global.adapter;
var deferred = adapter.deferred;
var dummy = { dummy: "dummy" }; // we fulfill or reject with this when we don't intend to test against it
describe("2.1.2.1: When fulfilled, a promise: must not transition to any other state.", function () {
testFulfilled(dummy, function (promise, done) {
var onFulfilledCalled = false;
promise.then(function onFulfilled() {
onFulfilledCalled = true;
}, function onRejected() {
assert.strictEqual(onFulfilledCalled, false);
done();
});
setTimeout(done, 100);
});
specify("trying to fulfill then immediately reject", function (done) {
var d = deferred();
var onFulfilledCalled = false;
d.promise.then(function onFulfilled() {
onFulfilledCalled = true;
}, function onRejected() {
assert.strictEqual(onFulfilledCalled, false);
done();
});
d.resolve(dummy);
d.reject(dummy);
setTimeout(done, 100);
});
specify("trying to fulfill then reject, delayed", function (done) {
var d = deferred();
var onFulfilledCalled = false;
d.promise.then(function onFulfilled() {
onFulfilledCalled = true;
}, function onRejected() {
assert.strictEqual(onFulfilledCalled, false);
done();
});
setTimeout(function () {
d.resolve(dummy);
d.reject(dummy);
}, 50);
setTimeout(done, 100);
});
specify("trying to fulfill immediately then reject delayed", function (done) {
var d = deferred();
var onFulfilledCalled = false;
d.promise.then(function onFulfilled() {
onFulfilledCalled = true;
}, function onRejected() {
assert.strictEqual(onFulfilledCalled, false);
done();
});
d.resolve(dummy);
setTimeout(function () {
d.reject(dummy);
}, 50);
setTimeout(done, 100);
});
});
要求:
能够在浏览器中运行测试而不依赖 node.js 、服务器或安装库吗?
问题:
如何使用浏览器提供的本机方法将此测试转换为版本,例如Console 方法;也就是说,用console.assert() 或window 提供的其他本机方法替换describe() 和specify()?
【问题讨论】:
-
完全不满意的答案是:手工:P
-
@JaredSmith 是的。好的,这种方法。对
node.js没有太多经验。如何在window处选择合适的对应方法?比如describe()和specify()有什么区别? -
您需要使用 Jasmine 或 Qunit 等客户端测试库。然后你应该几乎可以 grep 你的代码并替换等效的成语。例如,对于 Jasmine,它将是描述而不是指定。 IIRC qunit 的语法与上述几乎相同。
-
您根本不需要控制台输出,这些库将以图形方式显示 HTML 中的结果。没有库的唯一方法是写你自己的。
-
@JaredSmith 能够运行 QUnit。如何将上面链接的测试转换为 QUnit?或者甚至简单地使用
console.assert()?视觉显示不是必需的,只有结果。与describe()和specify()等效的原生window方法是什么?
标签: javascript node.js unit-testing