在JavaScript单元测试中维护模拟数据

时间:2016-10-10 09:46:28

标签: javascript unit-testing mocking mocha karma-runner

我正在寻找一种很好的最佳实践方法来在JavaScript单元测试中维护我的模拟对象。

我首先关注的是单元测试将侧重于功能,因此describeit会更短,因此它不会包含其中的模拟对象。

糟糕的例子:

it('some testing example', function() {
    const currentProduct = {
        name: 'VSp',
        description: 'dfdf',
        id: 'D4774719D085414E9D5642D1ACD59D20',
        version: '0.10',
        status: 'READY'
    };


    const obj = {
        product: {
            productEditor: {
                data: currentProduct
            },
            productComponents: {
                componentEditor: {
                    qdata: {},
                    qschema: {},
                    data: {}
                },
                network: {
                    nicEditor: {},
                    nicList: []
                }
            }
        }
    };

    const results = exampleFunctionUnderTest(obj);
    expect(results.qdata).toExist();
    expect(results.qschema).toExist();
    expect(results.componentData).toExist();
});

你可以意识到,被模拟的对象可能会更大,它会使单元测试代码非常难看,不清楚,不可读......

这个unti测试更容易阅读和理解:

it('some testing example', function() {

    const results = exampleFunctionUnderTest(someMockedObjectFromXXX);
    expect(results.qdata).toExist();
    expect(results.qschema).toExist();
    expect(results.componentData).toExist();
}); 

显然,天真的解决方案是将它们放在单独的.json.js文件中。但是,我可能会在.json个文件周围放置一个巨大的*.test.js个文件,这些文件可能会导致一些“嘈杂的”#34;工作环境。 < - 这是我的第二个问题 - 如何正确维护这些文件。

我没有成功找到合适的帖子来明确这个主题的内容,我很乐意参考推荐的帖子,或者如果你有自己的经验分享,你已经完成了你的项目。

如果重要,我使用karmamocha作为我的测试框架

干杯!

0 个答案:

没有答案