首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NPM工厂-机器人/女孩如何导出工厂定义以在我的NodeJS规范中使用?

NPM工厂-机器人/女孩如何导出工厂定义以在我的NodeJS规范中使用?
EN

Stack Overflow用户
提问于 2019-11-17 16:57:10
回答 1查看 469关注 0票数 2

我是JS新手。我正在使用Jasmine测试一个使用MongoDB和Mongoose的NodeJS应用程序,我想用动态工厂替换我的静态测试夹具。我觉得https://github.com/ratson/factory-bot看起来不错。

但是,所有示例都来自单个文件,并没有演示文件之间的导出/导入,因此我不知道为了在规范中使用工厂需要执行哪些modules.exports =操作。

如果重要的话,我也在使用ES5。

我的问题是:如何导出此定义?

spec/factories/user.js

代码语言:javascript
复制
const factory = require('factory-bot').factory;
factory.setAdapter(new FactoryBot.MongooseAdapter());
const User = require('../models/user');

factory.define('user', User, { 
  username: 'Bob',
  expired: false
});
factory.extend('user', 'expiredUser', {
  expired: true
 });

然后,我如何使用我的导出,以便我可以制作sampleUsers

spec/controllers/user.js

代码语言:javascript
复制
const reqs = require("../support/require")

describe("GET /users", () => {
  describe("index", () => {
    var data = {};

    var sampleUsers = factory.createMany('user', 5);

    beforeEach((done) => {
      reqs.Request.get(/users", (error, response, body) => {
        data.status = response.statusCode;
        data.body = JSON.parse(body);
        done();
      });
    });

    it("returns a 200 response status", () => {
      expect(data.status).toBe(200);
    });
    it("responds with the users collection", async () => {
          expect(data.body.users).toBe(sampleUsers);
    });
  });
});

提前感谢您的建议。

EN

回答 1

Stack Overflow用户

发布于 2020-12-30 00:43:39

在使用它们之前,您只需要要求您的工厂定义。

以下是您可以执行的操作的示例:

spec/factories/user.js

代码语言:javascript
复制
const { factory } = require('factory-bot');
const User = require('../models/user');

factory.setAdapter(new FactoryBot.MongooseAdapter());

factory.define('user', User, { 
  username: 'Bob',
  expired: false
});

factory.extend('user', 'expiredUser', {
  expired: true
});

spec/factories/index.js

代码语言:javascript
复制
const { factory } = require("factory-bot");

// Require factories to use with the exported object
require("./user.js");

module.exports = factory;

spec/controllers/user.js

代码语言:javascript
复制
const factory = require("../../factories");

...

const sampleUsers = factory.createMany('user', 5);

上面的示例和您的示例代码之间的关键区别是index.js文件,它需要factory-bot和所有工厂定义。通过要求定义,您将能够使用它们。

如果直接使用require('factory-bot')而不是require('spec/factories'),则需要使用要使用的工厂定义。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58898927

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档