我有一系列必须测试的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);
}
});
});
}