0

当我必须检查返回值的函数时,我在单元测试中遇到了这种奇怪的情况,而该值不能手动生成(值)。事实上,这个函数是为创建这个值而设计的。所以像这样测试(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 变量以将其与返回值进行比较实际上与 using 相同utf8ToArrayBuffer(testUtf8),因此测试如下所示:

equal(utf8ToArrayBuffer(testUtf8), utf8ToArrayBuffer(testUtf8), "UTF-8 to ArrayBuffer, OK!");

我应该测试这样的事情还是离开它?或者也许还有另一种方法?

4

1 回答 1

0

您不应该测试两个相等的函数调用是否返回相同的结果。您应该测试函数调用的结果是否符合您的预期。在你的情况下,这意味着你有一个值("łużyński")作为输入,你得到一个数组缓冲区作为输出。您可以测试输入值是否实际包含在输出中。

但是如果没有要测试的函数代码 ( utf8ToArrayBuffer()),很难说您究竟可以测试什么。

于 2013-02-15T17:13:10.830 回答