繁体   English   中英

测试返回不同对象的纯JavaScript文件

[英]Test plain javascript file returning different objects

是否可以使用Jasmine测试工具或任何其他npm模块(例如rewire或类似产品)测试以下代码?

const AuthValidatorDumb = require('./src/AuthValidatorDumb');
const AuthValidator = require('./src/AuthValidator');
const config = require('../config');

let instance;

if (!instance) {
  if (config.get('auth.enabled')) {
    instance = AuthValidator;
  } else {
    instance = AuthValidatorDumb;
  }
}

module.exports = instance;

我有一个测试上面代码的变体,假设你有:

1)上面问题中的index.js代码。

2) AuthValidator.js

class AuthValidator {}
module.exports = AuthValidator;

3) AuthValidatorDumb.js

class AuthValidatorDumb {}
module.exports = AuthValidatorDumb;

这是test / index.spec.js

const proxyquire = require('proxyquire');
const AuthValidator = require('../src/AuthValidator');
const AuthValidatorDumb = require('../src/AuthValidatorDumb');

describe('auth index', () => {
  it('should return AuthValidator', () => {
    const configMock = { get: () => 'sth' };
    const Instance = proxyquire('../index', {
      '../config': configMock,
    });
    expect(new Instance() instanceof AuthValidator).toBeTruthy();
  });

  it('should return AuthValidatorDumb', () => {
    const configMock = { get: () => undefined };
    const Instance = proxyquire('../index', {
      '../config': configMock,
    });
    expect(new Instance() instanceof AuthValidatorDumb).toBeTruthy();
  });
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM