node.js - Mocha 单元测试找不到功能

标签 node.js testing mocha.js

所以我正在尝试对一个函数进行单元测试,我在这里写的是函数:

function compareServices(service1, service2) {
  if (service1.name != service2.name) {
    return false
  }
  if (service1.port != service2.port) {
    return false
  }
  if (service1.target != service2.target) {
    return false
  }
  if (service1.address != service2.address) {
    return false
  }

  return true
}

它位于我的 main.js 文件中。现在,当我尝试运行测试时,我收到一条错误消息:

 Main #compareServices() should compare if two services match:
 TypeError: main.compareServices is not a function
  at Context.<anonymous> (test/stelaSpec.js:21:25

这是我的测试文件:

var expect = require("chai").expect;
var main = require("../src/main.js");

describe("Main", function(){
  describe('#compareServices()', function() {
    it('should compare if two services match', function() {
      var svc1 = {
        "name": "test.fg.service",
        "port": 8001,
        "target": "mac-book",
        "address": "192.2.2.2"
      }

      var svc2 = {
        "name": "test.fg.service",
        "port": 8001,
        "target": "mac-book",
        "address": "192.2.2.2"
      }

      var result = main.compareServices(svc1, svc2);

      expect(result).equal(true)
    });
  });
});

为什么说它不是一个函数,而它是一个函数?

最佳答案

确保在 main.js 文件的末尾包含以下内容:

module.exports = {
  compareServices: compareServices
};

这将使需要它的其他 javascript 文件可以访问该函数。

关于node.js - Mocha 单元测试找不到功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35777882/

相关文章:

spring - 显示与@MockBean 注释模拟的交互

node.js - selenium-webdriver 的执行顺序(对于 Node JS)

javascript - 测试未导出的 TypeScript 函数

javascript - Mocha 一开始从 MongoDb 查找用户,稍后创建

javascript - nodejs将相同的变量传递给不同的模块

node.js - nodejs 和 npm 的路径不同

node.js - 重命名 Sequelize 迁移表

javascript - 在 Angular 加载后加载 Jade 并解析所有变量

android - 密度独立性测试

java - 我可以 "replace"来自静态代码之外的 Java 类吗?