在 mocha/chai 测试中检查 value 是字符串还是数字

eis*_*ehr 6 javascript unit-testing mocha.js chai

我很好奇如何测试 avalue为 astring numberwith chai。当这是一个严格的测试时,我知道如何为 astring或 a编写测试number。但如何处理,什么时候value可以成为其中之一呢?

对字符串的测试:

describe("test", () => {
    it("should be a string", () => {
       let value = "1234";
       value.should.be.a("string");
    });
});
Run Code Online (Sandbox Code Playgroud)

对数字的测试:

describe("test", () => {
    it("should be a number", () => {
       let value = 1234;
       value.should.be.a("number");
    });
});
Run Code Online (Sandbox Code Playgroud)

有没有内置的方法可以chai做到这一点?

我知道我可以采取一些解决方法,如下所示。但这感觉有点老套

describe("test", () => {
    it("should be a number or string", () => {
       let value = 1234;
       (typeof value).should.be.oneOf(["string", "number"]);
    });
});
Run Code Online (Sandbox Code Playgroud)

Era*_*hel 4

您可以编写自己的方法:

chai.Assertion.addMethod('stringOrNumber', function () {
    //Check if it is a string or a number here
});
Run Code Online (Sandbox Code Playgroud)

然后在你的测试中:

expect(myValue).to.be.stringOrNumber();
Run Code Online (Sandbox Code Playgroud)

请参阅插件实用程序文档