2014-12-27 2 views
1

현재 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을 사용하고 있습니다.

답변

1

내가 그것을 알아 냈어. 이 통화 중 하나를 수행하기 전에 먼저 내 상담원을 인증해야했습니다 (로그인 경로로 전화하여).

는 본질적 :

var agent = request.agent(sails.hooks.http.app); 
agent.post('YOUR_LOGIN_ROUTE').end(done); 

// do your tests 
0

흠, 돛 응용 프로그램처럼 보이는 것을 supertest에 전달해야합니까? 여기에 당신이해야 할 일을 보여주는 예제가 있습니다. 두 번째 대답에 전 기능을 봐 :

How to test controller using mocha in Sails?

+0

그래, 나는'''시도에 http : // localhost를 : 1337'''뿐만 아니라'''sails.hooks.http.app'''하지만 둘 다 결과 같은 문제. 테스트 스 니펫의 13 번째 줄에 있습니다. – kk415kk

관련 문제