【问题标题】:How to unit test if something is !== using jasmine and check flag?如何使用 jasmine 对某些东西进行单元测试!== 并检查标志?
【发布时间】:2020-04-07 22:48:49
【问题描述】:

嘿,我的 Angular 应用程序中有这个方法,我想对它进行单元测试:

public methodEquip(someBonus: Parameters) {
    let flag = false;
    for (const shield of someBonus.items) {
        if (shield.added.length !== 0 || shield.removed.length !== 0) {
            flag = true
        }
        if (flag) {
            return true;
        } else {
            return false;
        }
    }
}

我想用 Jasmine 对其进行单元测试。我可以做简单的单元测试,但现在对我来说太多了,我被困住了。我对单元测试很陌生,我不知道该怎么做:/ 你能帮帮我吗?

我现在只有这个,其余的我不知道该怎么做:

it('tests methodEquip', () => {
       let flag = false;
       const newMocked = new Parameters;
       component.methodEquip(newMocked);        
});

【问题讨论】:

    标签: unit-testing jasmine karma-jasmine angular-test angular-unit-test


    【解决方案1】:

    使用 Jasmine,任何 matcher 都可以通过在调用 matcher 之前将 expect 的调用与 not 链接起来来评估否定断言。

    对于原始类型(布尔值、数字、字符串等):

    expect(actual).not.toBe(x);
    

    对于对象:

    expect(actual).not.toEqual(x);
    

    在您的情况下,测试可能如下所示:

    it('#methodEquip should not return false when ...', () => {
        const parameters = new Parameters;
        const actual = component.methodEquip(parameters);
        expect(actual).not.toBe(false);
    });
    

    由于boolean 只有两个可能的值,但是简单地写成expect(actual).toBe(true) 会更有意义;

    【讨论】:

    • 我可以操纵长度值来检查其他选项吗?是否有意义或者这个单一的测试就足够了?
    • 您通常为每个方法编写 1-n 个单元测试,以确保所有不同的代码分支都至少执行一个并产生预期的结果。
    • 这个测试用例出现错误“无法读取未定义的属性'长度'”,我现在正在寻找一些提示
    猜你喜欢
    • 1970-01-01
    • 2017-07-10
    • 1970-01-01
    • 2021-01-28
    • 2017-02-28
    • 1970-01-01
    • 2014-08-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多