在单元测试中,当我必须检查返回值的函数时,我会遇到这种奇怪的情况,而这些值不能手动生成(value)。事实上,这个功能是为了创造这个价值。这样测试(javascript和QUnit框架):
asyncTest("UTF-8 - ArrayBuffer conversion", 1, function() {
var arrayBuffer;
var testUtf8 = "łużyński";
var blob = new Blob([testUtf8]);
var f = new FileReader();
f.onload = function(e) {
arrayBuffer = e.target.result;
start();
};
equal(utf8ToArrayBuffer(testUtf8), arrayBuffer, "UTF-8 to ArrayBuffer, OK!");
});
是多余的,因为准备arrayBuffer变量将其与返回值进行比较实际上与使用utf8ToArrayBuffer(testUtf8)
相同,所以测试看起来像这样:
equal(utf8ToArrayBuffer(testUtf8), utf8ToArrayBuffer(testUtf8), "UTF-8 to ArrayBuffer, OK!");
我应该测试这样的东西还是离开它?或者可能还有另一种方法?
您不应该测试两个相等的函数调用是否返回相同的结果。您应该测试函数调用的结果是否符合预期。在您的情况下,这意味着您有一个值("łużyński"
)作为输入,并获得一个数组缓冲区作为输出。您可以测试输入值是否真的包含在输出中。
但是,如果没有要测试的函数代码(utf8ToArrayBuffer()
),很难说你能测试什么。