NPM Factory-Bot / Girl如何导出工厂定义以在我的NodeJS规范中使用?

JS新手在这里。我正在使用Jasmine测试使用MongoDB和Mongoose的NodeJS应用程序,我想用动态工厂替换我的静态测试装置。 https://github.com/ratson/factory-bot对我来说很好。

但是,所有示例都来自单个文件,并且没有演示文件之间的导出/导入,因此我不理解要modules.exports =使用什么才能在我的规格中使用工厂。

如果这很重要,我也在使用ES5。

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

spec/factories/user.js

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

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);
    });
  });
});

预先感谢您的任何建议。

yangdebin7 回答:NPM Factory-Bot / Girl如何导出工厂定义以在我的NodeJS规范中使用?

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

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

spec/factories/user.js

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

const { factory } = require("factory-bot");

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

module.exports = factory;

spec/controllers/user.js

const factory = require("../../factories");

...

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

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

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

本文链接:https://www.f2er.com/3087155.html

大家都在问