javascript - 为什么输出中没有出现字符串 "nullfalse"?

标签 javascript unit-testing

buffer 必须返回 function,它返回 String,这是我通过调用 buffer('Hello') 创建的

/**
 * Function makeBuffer
 * @returns {String}
 */
function makeBuffer() {
    let str = '';
    return function(...rest) {
        if (rest.length === 0) {
            return str;
        }
        str += rest;
        str.toString();
    };
};
/**
 * Starting unit-test
 * @returns {String}
 */
;(function () {
  let buffer;
  beforeEach(function() {
    buffer = makeBuffer();
  });
  
  it("returns String", function() {
    buffer(null);
    buffer(false);
    assert.equal(buffer(), "nullfalse");
  });
})()


var buffer = makeBuffer();

buffer('Hello');
buffer(' my');
buffer(' world');

console.log(buffer());
<html>

<head>
  <meta charset="utf-8">
  <script src="https://js.cx/test/libs.js"></script>
</head>

<body>
</body>

</html>

最佳答案

那是因为

[null].toString() == ""
[false].toString() == "false"

尝试

function makeBuffer() {
    let str = '';
    return function(...rest) {
        if (rest.length === 0) {
            return str;
        }
        str += rest.map(e => { return "" + e }).join("");
    };
};

关于javascript - 为什么输出中没有出现字符串 "nullfalse"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44199788/

相关文章:

javascript - 我需要有关图片编号的文本以在 jcarousel 中更改

javascript - 使用 Angularjs 加载 javascript 脚本的最佳方法是什么?

unit-testing - 在Grails中模拟域类

unit-testing - 使用 AutoFixture 将集合的属性设置为 Xunit 理论的数据

java - Cobertura 如何与 JUnit 一起工作?

javascript call 方法中的 "this"对象

javascript - 为什么 Angular Controller 需要 "$scope"

javascript - 自动选择单选按钮,然后在页面加载时提交按钮 - Javascript

java - 如何模拟 super 引用(在 super 类上)?

unit-testing - 了解 block 测试的 block 覆盖率度量