현재 Sails 앱의 인프라를 테스트 중이므로 supertest
으로 API 요청 테스트를 시도 할 때까지 원활하게 진행되고 있습니다.Sails.js와 Mocha : 새 모델을 만들려면 supertest 사용
(기본 청사진 경로를 사용하는 대신 구현 한) 컨트롤러 메서드 중 일부를 테스트하려고하지만 API 요청이 진행되지 않는 것처럼 보입니다. 내가 npm test
을 실행할 수 있고이 코드가 잘 돌아갈 수 있다고 생각하는 이유는, 컨트롤러 경로로 create5()
이없는 /datamodel/create5
으로 POST 경로를 변경하면 여전히 정상적으로 실행됩니다 ... 두 경우 모두 a DataModel 모델이 작성되지 않습니다. 아래에 몇 가지 코드를 포함 시켰습니다.
이 내 코드는 모습입니다 같은 : 내 컨트롤러 코드의
var request = require('supertest');
var assert = require('assert');
var async = require('async');
var stubs = require('../stubs.js');
describe('DataModel', function() {
var testDataModel;
var dataModelParams = stubs.dataModelStub(); // simply returns a JSON dictionary
describe('#create()', function() {
describe('data model import', function() {
it('should import a new data model.', function (done) {
var agent = request.agent(sails.hooks.http.app);
agent
.post('/datamodel/create')
.send(dataModelParams)
.expect(302)
.end(function (err, res) {
if (err) {
throw new Error(err);
}
console.log(res.dataModel);
DataModel.find().exec(function (err, dataModels) {
console.log(dataModels); // should return an array of 1 model but returns empty array instead
done();
});
});
});
});
});
코드 조각 : 내 응용 프로그램이 실행될 때 create
기능이 실제로 제대로 실행되는지
create: function(req, res) {
DataModel.create(req.params.all(), function dataModelCreated(err, dataModel) {
if (err) {
sails.log.debug(err);
}
FlashService.success(req, 'Successfully imported a new data model.');
fs.ensureDirSync(path.join(sails.config.paths.DATASET_EXTRACT_PATH, dataModel.fileSafeName));
fs.ensureDirSync(path.join(sails.config.paths.DATASET_DOWNLOAD_ROOT, 'non_pii', dataModel.fileSafeName));
fs.ensureDirSync(path.join(sails.config.paths.DATASET_DOWNLOAD_ROOT, 'pii', dataModel.fileSafeName));
fs.ensureDirSync(path.join(sails.config.paths.DATASET_ENCRYPT_PATH, dataModel.fileSafeName));
return res.redirect('/admin/manage_data_models');
});
}
참고. 왜 내 테스트가 제대로 작동하지 않는지에 대한 제안이 있습니까? 도움이된다면 테스트에 sails-memory
을 사용하고 있습니다.
그래, 나는'''시도에 http : // localhost를 : 1337'''뿐만 아니라'''sails.hooks.http.app'''하지만 둘 다 결과 같은 문제. 테스트 스 니펫의 13 번째 줄에 있습니다. – kk415kk