Meteor - 使用mocha进行测试时HTTP不会执行请求

时间:2018-03-08 17:44:23

标签: http meteor mocha

我有一系列必须测试的Meteor方法。每当我称这些方法运行Meteor时,它们都可以工作。但是,当我运行“TEST_WATCH = 1 meteor test --driver-package meteortesting:mocha --port 3050”来测试这些相同的方法时,它们会在HTTP调用处停止并收到此错误消息“错误:超出2000ms超时确保在此测试中调用done()回调。“。

下面调用的流星方法。

"mails": async () => {
    let promise = new Promise((resolve, reject) => {
        HTTP.post(
            "http://localhost:3000/api/mail",
            {
                headers: {
                    "Content-Type": "application/x-www-form-urlencoded",
                    "key": "x"
                },
                data: {
                    "destinationMail": "mail@gmail.com",
                    "mail": "test"
                }
            }, (error, response) => {
                if (error) reject(error);
                else resolve (response);
            }
        );
    });
    try{
        return await promise;
    }catch(error){
        return error;
    }
},

复发routine.test.js

import { Meteor } from "meteor/meteor";
import { MeteorStubs } from "meteor/velocity:meteor-stubs";
import { Random } from "meteor/random";
import faker from "faker";
import { chai } from 'meteor/practicalmeteor:chai';
import { CPF, CNPJ } from 'cpf_cnpj';

//Collections
import { Security } from "./security";

//Import server files
import "../../server/gateway/session.js";

if (Meteor.isServer) {

describe("Recurrence subscribing", () => {
    var fakeUsers = [];
    beforeEach(() => {
        faker.locale = "pt_BR";

        let date = new Date();
        date = moment(date).format('YYYY-MM-DD HH:mm:ss');

        //Clears the collection
        Meteor.users.remove({});

        for (let i = 0; i < 2; i++) {
            let user = {
                name: faker.name.firstName(),
                lastName: faker.name.lastName(),
                vatNumber: CPF.generate(true),
                email: "",
                phoneNumber: faker.phone.phoneNumber(),
                birthDate: faker.date.past(20, "2010-01-01").toISOString().substring(0, 10),
                address: {
                    zipCode: faker.address.zipCode(),
                    city: faker.address.city(),
                    stateAbbr: faker.address.stateAbbr(),
                    streetName: faker.address.streetName()
                }
            }
            user.email = faker.internet.email(user.name, user.lastName);
            fakeUsers.push(user);

            //Inserts the new user into the collection
            Meteor.users.insert({
                "_id": i.toString(),
                "createdAt": date,
                "intro": {
                    "show": false,
                    "step": 3
                },
                "affiliate": {
                    "_id": "",
                    "indicated": true
                },
                "profile": {
                    "name": user.name + " " + user.lastName,
                    "firstName": user.name,
                    "lastName": user.lastName,
                    "gender": "male",
                    "birthday": user.birthDate,
                    "timezone": -2,
                    "image": "",
                    "cover": null,
                    "cover_facebook": null
                },
                "registered_phones": [
                    {
                        "number": user.phoneNumber,
                        "verified": false
                    }
                ],
                "registered_emails": [
                    {
                        "address": user.email,
                        "verified": true
                    }
                ]
            });

        }

        //Creates settings.json
        MeteorStubs.install();
        Meteor.settings.gateway = {
            private: {
                gateway_uuid: "x-x-x-x-x",
                requesterId: "xxx_xxx",
                key: "x",
                transactionUUIDRecurrence: "x",
                working_operation_uuid: "x",
                encript_key: "x",
                productAcquireTemplateUUID: "x",
                cardTypeUUID: "x",
                transactionUUID: "x",
                domain: "x"
            }
        }

        Security.remove({});
    });
    it("It can get a new security token!", async (done) => {

        let promise = new Promise((resolve, reject) => {
            Meteor.call("mails", function (error, success) {
                if (error)
                    reject(error);
                else {
                    console.log("success =", success);
                    resolve(success);
                }
            });
        });
        try {
            let response = await promise;
            setImmediate(done);
        } catch (error) {
            console.log(error);
        }
    });
});
}

0 个答案:

没有答案