1
저는 Mocha와 Chai HTTP를 사용하여 Rest API를 테스트하고 있습니다. 나는 콜백을 사용하여 테스트 케이스를 모두 쓰고했는데 지금은 더 많은 황갈색 콜백과 약속 읽을 수있는, 그래서이 코드를 얻을 수 있기 때문에 비동기/await를 사용하려면 :모카와 차이 HTTP 비동기 테스트?
let sport1, sport2;
let user1, user2;
let user1Token;
let event1, event2, event3, event4;
beforeEach(async function() {
const preUser1 = test.createUser('[email protected]');
const preUser2 = test.createUser('[email protected]')
sport1 = await Sport.create(test.createSport('Tenis'));
sport2 = await Sport.create(test.createSport('Baloncesto'));
user1 = await User.create(preUser1);
user2 = await User.create(preUser2);
event1 = await Event.create(test.createEventDb(user1._id, sport1._id));
event2 = await Event.create(test.createEventDb(user1._id, sport2._id));
event3 = await Event.create(test.createEventDb(user2._id, sport1._id));
event4 = await Event.create(test.createEventDb(user2._id, sport2._id));
await chai.request(app)
.post(`${apiPath}/sessions`)
.set('content-type', 'application/json')
.send({ email: preUser1.email, password: preUser1.password })
.end(function (err, res) {
console.log(res.body)
user1Token = res.body.data.session.token;
});
});
이 기다리고를 문 작업을 좋아,하지만 여기서 문제는 chai에있다. 이 오류가 나타납니다.
1) Events "before each" hook for "should return 200, id and event info":
TypeError: First argument must be a string or Buffer
at ClientRequest.end (_http_outgoing.js:605:11)
at Test.Request.end (node_modules/superagent/lib/node/index.js:873:9)
at node_modules/superagent/lib/request-base.js:72:12
at Test.then (node_modules/superagent/lib/request-base.js:71:31)
at process._tickCallback (internal/process/next_tick.js:109:7)
그러나이 오류는 async/await 호출 없이는 발생하지 않습니다. 무슨 일이 벌어지고 있는지에 대한 어떤 생각? 감사.
흠, 그들은 차이 티 HTTP 약속 [예]에'.end'를 사용하지 않는 (http://chaijs.com/plugins/chai-http/). 대신 그들은 응답을 얻기 위해'.then '를 호출한다. 따라서 약속 예제를 올바르게 이해한다면 비동기/응답으로 변수를 응답에 저장하고 (예 :'.then ') 대신'expect '(또는 원하는 다른 어설 션 함수)를 호출 할 수 있습니다. – Rhayene
사실입니다. 나는 그들이 약속을 사용할 때'.end()'메서드를 사용하지 않는다는 것을 알지 못했습니다. 그것은 완벽하게 변수의 응답을 저장하고, 어서션을 만드는 일을하고 있습니다, 감사합니다! –
나만의 질문에 자유롭게 대답 해주세요 :) – Rhayene