javascript - 我应该测试模块是否具有某些属性吗?

标签 javascript testing

过去两个月我一直在编写测试(用 JavaScript)。而且,我有检查模块是否具有某些属性的习惯。

例如:

// test/foo.js
const Foo = require('../lib/foo');
const Expect = require('chai').expect;

describe('Foo API', () => {
    it('should have #do and #dont properties', () => {
        Expect(foo).to.have.property('do')
            .and.to.be.a('function');

        Expect(foo).to.have.property('dont')
            .and.to.be.a('function');
        });
     });
});

而且,我一直在想我是否在做正确的事情。只是想知道一些事情:

  1. 这个模式“正确”吗?

    • 是否被广泛使用?
    • 还有其他方法吗?
  2. 如果它不“正确”?

    • 为什么?
  3. 它甚至有意义吗?

    • 我的意思是,它是不必要的还是多余的?

最佳答案

不要测试类型。测试特定属性值是否符合预期值。

因此,不是“foo 是一个函数”,而是编写一个调用 foo 并期望特定结果的测试。

如果 foo 不是一个函数,您将生成一个错误并且测试将失败(这很好)。如果 foo 是一个函数,您将对该函数的行为进行适当的测试。

关于javascript - 我应该测试模块是否具有某些属性吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38154409/

相关文章:

python - 有没有一种首选方法可以使用 pytest 测试回调?

javascript - 如何使用 vanilla js 更新 polymer 元素的数据(dom)?

unit-testing - 为从中读取的函数填充 os.Stdin

Android 测试 - 应用程序在一部手机上运行,​​但在其他手机上崩溃

java - 来自 javascript 的 Spring Controller 调用。使用 spring 进行注释

android - 测试运行开始测试运行失败 : Unable to find instrumentation info for: ComponentInfo{ro. vst.test/android.test.InstrumentationTestRunner}

c++ - C/C++涉及2个进程时如何使用fake function framework?

javascript - 如何在 typescript 中将数组的所有成员初始化为相同的值?

php - 避免在页面中多次包含样式表/外部 js 的最佳方法

javascript - 如何在 angularjs 单元测试中触发 mousemove 事件