gpt4 book ai didi

javascript - 如何检查函数是否有参数以及参数是否为数字

转载 作者:行者123 更新时间:2023-12-02 17:03:16 24 4
gpt4 key购买 nike

我是单元测试和使用 Mocha/Chai 的新手。我正在尝试测试该函数是否有参数以及它是否是数字。

// Main Function
function Sh(partnerUserId) {


function validPartnerId(partnerUserId) {
if (!partnerUserId);
throw new Error("Missing partnerId");


if (isNaN(partnerUserId));
throw new Error("Not a number");

return true;
}
}



// Unit Test

var expect = chai.expect;

describe("Sh", function() {

it('should check if the partnerId is provided', function(){
????
});


it('should check if the partnerId is a number', function(){
????
});

});

如果有更好的方法,我愿意接受建议。我试图找到如何捕获参数的值并在单元测试中验证它。

最佳答案

确实不清楚您要使用 Sohalo 做什么?功能。我必须重写它才能获得有意义的函数。无论如何,您需要使用 expect(fn).to.throw(...) 来检查检查是否正在发生。 。它的文档是 here 。请注意,当您想要检查具有特定参数的调用是否引发异常时,最方便的方法是使用 bind 。所以类似:

expect(Sohalo.bind(undefined, 1)).to.not.throw(Error, "Not a number");

将测试通话Sohalo(1) 。 ( bind 的第一个参数在函数内设置 this 的值,我们在这里不需要它,所以我将其保留 undefined )。

因此,包含您的函数并测试它的文件可能如下所示:

function Sohalo(partnerUserId) {
if (typeof partnerUserId !== "number" || isNaN(partnerUserId))
throw new Error("Not a number");
}

var chai = require("chai");
var expect = chai.expect;

describe("Sohalo", function() {
it('should fail if partnerUserId is not given', function(){
// This tests calling Sohalo with no arguments whatsoever.
expect(Sohalo).to.throw(Error, "Not a number");
});

it('should fail if partnerUserId is not a number', function(){
expect(Sohalo.bind(undefined, {})).to.throw(Error, "Not a number");
});

it('should fail if partnerUserId is NaN', function(){
expect(Sohalo.bind(undefined, NaN)).to.throw(Error, "Not a number");
});

it('should not fail if the partnerUserId is a literal number', function(){
expect(Sohalo.bind(undefined, 1)).to.not.throw(Error, "Not a number");
});

it('should not fail if the partnerUserId is a Number object', function(){
expect(Sohalo.bind(undefined, Number(10))).to.not.throw(Error, "Not a number");
});
});

在我的测试套件中,我通常会使用 expect().to.throw 执行测试但不包括 expect().to.not.throw 。我不会显式检查函数是否抛出异常,而是使用良好的参数调用它并检查结果是否正确。我正在使用expect().to.not.throw这里只是为了说明。

关于javascript - 如何检查函数是否有参数以及参数是否为数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25494836/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com