Я работаю над применением стека MEAN (используя руководство для руководства), и у меня возникла проблема с одним из моих тестов. Когда я запускаю мокко-тест ниже, время истекает. Я пробовал продлить таймер, но безрезультатно. У меня есть еще один тест, который почти идентичен, но для другого маршрута. Я проверил файл api, чтобы убедиться, что у меня есть правильные URL-адреса. Не уверен, что здесь происходит.Тест Mocha синхронизируется со стеком MEAN
- экспресс v4.12.3
- Мокко v2.2.4
- глотка-мокко v2.0.1
- SuperAgent v1.2.0
- глотка v3.9.0
- узел v5.1.0
Код:
describe('Transaction API', function() {
it('can load a transaction by id', function(done) {
// Create a single transaction
var TRANSACTION_ID = '001';
var transaction = {
name: 'LG2 G4',
_id: TRANSACTION_ID,
amount: 300
};
Transaction.create(transaction, function(error, doc) {
assert.ifError(error);
var url = URL_ROOT + '/transactions/id/' + TRANSACTION_ID;
superagent.get(url, function(error, res) {
assert.ifError(error);
var result;
// And make sure we got the LG G4 back
assert.doesNotThrow(function() {
result = JSON.parse(res.text);
});
assert.ok(result.transaction);
assert.equal(result.transaction._id, TRANSACTION_ID);
assert.equal(result.transaction.name, 'LG2 G4');
done();
});
});
});
});
Вот мой маршрут в app.js
api.get('/transactions/id/:id', wagner.invoke(function(Transactions) {
return function(req, res) {
Transactions.findOne({ _id: req.params.id },
handleOne.bind(null, 'transactions', res));
};
}));
function handleOne(property, res, error, result) {
if (error) {
return res.
status(status.INTERNAL_SERVER_ERROR).
json({ error: error.toString() });
}
if (!result) {
return res.
status(status.NOT_FOUND).
json({ error: 'Not found' });
}
var json = {};
json[property] = result;
res.json(json);
}
По какой-то причине это работает просто отлично.
api.get('/category/id/:id', wagner.invoke(function(Category) {
return function(req, res) {
Category.findOne({ _id: req.params.id },
handleOne.bind(null, 'category', res));
};
}));
Вы можете проверить, вызван ли ваш обратный вызов на 'superagent.get'? попробуйте записать что-то внутри обратного вызова. –
@DeendayalGarg Я получаю это '{"error": "CastError: Cast to ObjectId failed for value \" 001 \ "at path \" _ id \ ""}' – Alex
Да, вам нужно передать идентификатор объекта в транзакции. findOne'. Поскольку '_id' имеет тип ObjectId. вам нужно скрывать 'req.params.id' ObjectId. –