คำถามติดแท็ก mocha

Mocha.js คือเฟรมเวิร์กการทดสอบ JavaScript ที่มีฟีเจอร์มากมายซึ่งทำงานบน Node.js และเบราว์เซอร์

8
NodeJS UnhandledPromise การปฏิเสธคำเตือน
ดังนั้นฉันกำลังทดสอบส่วนประกอบที่ต้องอาศัยตัวปล่อยเหตุการณ์ เมื่อต้องการทำเช่นนั้นฉันจึงหาวิธีแก้ปัญหาโดยใช้สัญญากับมอคค่า + ชัย: it('should transition with the correct event', (done) => { const cFSM = new CharacterFSM({}, emitter, transitions); let timeout = null; let resolved = false; new Promise((resolve, reject) => { emitter.once('action', resolve); emitter.emit('done', {}); timeout = setTimeout(() => { if (!resolved) { reject('Timedout!'); } clearTimeout(timeout); }, 100); …

9
การทดสอบหน่วยของฟังก์ชันส่วนตัวด้วยมอคค่าและโหนด js
ฉันใช้มอคค่าเพื่อทดสอบหน่วยแอปพลิเคชันที่เขียนขึ้นสำหรับ node.js ฉันสงสัยว่าเป็นไปได้ไหมที่จะใช้ฟังก์ชันทดสอบหน่วยที่ยังไม่ได้ส่งออกในโมดูล ตัวอย่าง: ฉันมีฟังก์ชันมากมายที่กำหนดไว้เช่นนี้ใน foobar.js function private_foobar1(){ ... } function private_foobar2(){ ... } และฟังก์ชันบางอย่างที่ส่งออกเป็นสาธารณะ: exports.public_foobar3 = function(){ ... } กรณีทดสอบมีโครงสร้างดังนี้: describe("private_foobar1", function() { it("should do stuff", function(done) { var stuff = foobar.private_foobar1(filter); should(stuff).be.ok; should(stuff)..... เห็นได้ชัดว่าสิ่งนี้ใช้ไม่ได้เนื่องจากprivate_foobar1ไม่มีการส่งออก วิธีที่ถูกต้องในการทดสอบหน่วยส่วนตัวคืออะไร? มอคค่ามีวิธีการในตัวสำหรับการทำเช่นนั้นหรือไม่?

5
ฉันจะปิดอินสแตนซ์ของ ExpressJS โดยทางโปรแกรมเพื่อทดสอบได้อย่างไร
ฉันกำลังพยายามหาวิธีปิดอินสแตนซ์ของ Express โดยพื้นฐานแล้วฉันต้องการการผกผันของการ.listen(port)โทร - ฉันจะทำให้เซิร์ฟเวอร์ Express หยุดฟังปล่อยพอร์ตและปิดอย่างหมดจดได้อย่างไร ฉันรู้ว่านี่อาจเป็นคำถามแปลก ๆ ดังนั้นนี่คือบริบท อาจมีวิธีอื่นในการเข้าถึงสิ่งนี้และฉันคิดผิด ฉันกำลังพยายามตั้งค่ากรอบการทดสอบสำหรับแอพ socket.io/nodejs ของฉัน มันเป็นแอพหน้าเดียวดังนั้นในสคริปต์การทดสอบของฉัน (ฉันใช้Mochaแต่นั่นไม่สำคัญจริงๆ) ฉันต้องการที่จะสามารถเริ่มต้นเซิร์ฟเวอร์เรียกใช้การทดสอบกับเซิร์ฟเวอร์จากนั้นปิดเซิร์ฟเวอร์ ฉันสามารถหลีกเลี่ยงสิ่งนี้ได้โดยสมมติว่าเซิร์ฟเวอร์เปิดอยู่ก่อนที่การทดสอบจะเริ่มขึ้นหรือโดยการทดสอบอย่างใดอย่างหนึ่งเริ่มเซิร์ฟเวอร์และการทดสอบครั้งต่อ ๆ ไปจะถือว่าขึ้น แต่มันยุ่งมาก ฉันต้องการให้ไฟล์ทดสอบแต่ละไฟล์เริ่มต้นอินสแตนซ์เซิร์ฟเวอร์ด้วยการตั้งค่าที่เหมาะสมแล้วปิดอินสแตนซ์นั้นเมื่อการทดสอบสิ้นสุดลง นั่นหมายความว่าไม่มีการพึ่งพาแปลก ๆ ในการเรียกใช้การทดสอบและทุกอย่างสะอาด นอกจากนี้ยังหมายความว่าฉันสามารถทำการทดสอบการเริ่มต้น / ปิดเครื่องได้ มีคำแนะนำเกี่ยวกับวิธีการทำอย่างไร ฉันคิดเกี่ยวกับการเรียกใช้ข้อยกเว้นด้วยตนเองเพื่อนำมาลง แต่ดูเหมือนจะยุ่ง ฉันขุดผ่านเอกสาร Express และซอร์ส แต่ดูเหมือนจะไม่พบวิธีการใด ๆ ที่จะปิดเซิร์ฟเวอร์ อาจมีบางอย่างใน socket.io สำหรับสิ่งนี้ แต่เนื่องจากเซิร์ฟเวอร์ซ็อกเก็ตเชื่อมต่อกับเซิร์ฟเวอร์ Express ฉันคิดว่าสิ่งนี้จะต้องเกิดขึ้นที่เลเยอร์ด่วน

4
การทดสอบ javascript ด้วย Mocha - ฉันจะใช้ console.log เพื่อดีบักการทดสอบได้อย่างไร
ฉันใช้โปรแกรมทดสอบจาวาสคริปต์ "Mocha" ฉันมีการทดสอบที่ล้มเหลวดังนั้นฉันจะแก้ไขข้อบกพร่องโดยใช้console.log. แต่เมื่อดำเนินการทดสอบจะไม่มีผลลัพธ์ (เฉพาะผลการทดสอบจากมอคค่า) ดูเหมือนว่ามอคค่าจะจับและปราบปรามconsole.logผลผลิตของฉัน! ฉันจะให้มอคค่าแสดงผลลัพธ์ได้อย่างไร (สำหรับการทดสอบที่ล้มเหลว)? แก้ไข: ขออภัยอย่างสูง! - console.logทำงานระหว่างการทดสอบ! ฉันต้องคาดหวังว่ามันจะระงับเอาต์พุตและฉันไม่ได้ตรวจสอบรหัสของตัวเองอย่างถูกต้อง ขอบคุณสำหรับการตอบกลับ ดังนั้น ... ที่ถูกกล่าวว่า ... บางทีอาจเป็นการดีที่จะระงับผลลัพธ์สำหรับการทดสอบที่ผ่าน? อืม ... ในบันทึกที่เกี่ยวข้อง: ฉันต้องการใช้console.logเนื่องจากฉันมีปัญหามากมายในการพยายามรับตัวดีบักเกอร์ Eclipse เพื่อเชื่อมต่อกับ node.js ฉันเป็นคนเดียวที่พบว่ามีเล่ห์เหลี่ยมนี้หรือไม่? พวกคุณแก้จุดบกพร่อง node.js ได้อย่างไร? ด้วยดีบักเกอร์หรือด้วยconsole.logคำสั่ง?

7
การทดสอบ Mocha API: การรับ 'TypeError: app.address ไม่ใช่ฟังก์ชัน'
ปัญหาของฉัน ฉันได้เข้ารหัส CRUD ง่าย API มากและฉันเพิ่งเริ่มต้นการเขียนโปรแกรมยังทดสอบบางอย่างใช้chaiและแต่ฉันมีปัญหาเมื่อการทดสอบการทำงานของฉันด้วยchai-http$ mocha เมื่อฉันเรียกใช้การทดสอบฉันได้รับข้อผิดพลาดต่อไปนี้บนเชลล์: TypeError: app.address is not a function รหัสของฉัน นี่คือตัวอย่างการทดสอบของฉัน ( /tests/server-test.js ): var chai = require('chai'); var mongoose = require('mongoose'); var chaiHttp = require('chai-http'); var server = require('../server/app'); // my express app var should = chai.should(); var testUtils = require('./test-utils'); chai.use(chaiHttp); describe('API Tests', …

20
จุดพัก Mocha โดยใช้ Visual Studio Code
เป็นไปได้หรือไม่ที่จะเพิ่มเบรกพอยต์ให้กับการทดสอบ Mocha โดยใช้ Visual Studio Code โดยปกติเมื่อทำการดีบักโค้ดเราจำเป็นต้องกำหนดค่า launch.json โดยตั้งค่าแอ็ตทริบิวต์ของโปรแกรมเป็นไฟล์ javascript เพื่อเรียกใช้งาน ฉันไม่แน่ใจว่าจะทำสิ่งนี้ให้กับมอคค่าได้อย่างไร

17
Babel นำเข้าโทเค็นที่ไม่คาดคิดเมื่อเรียกใช้การทดสอบมอคค่า
โซลูชันที่นำเสนอในคำถามอื่น ๆ ที่เกี่ยวข้องเช่นการรวมค่าพรีเซ็ตที่เหมาะสม (es2015) ใน. babelrc ถูกนำไปใช้ในโครงการของฉันแล้ว ฉันมีสองโครงการ (ให้เรียกพวกเขาว่า A และ B) ซึ่งทั้งคู่ใช้ไวยากรณ์โมดูล ES6 ในโครงการ A ฉันกำลังนำเข้าโครงการ B ซึ่งติดตั้งผ่าน npm และอยู่ในโฟลเดอร์ node_modules เมื่อฉันเรียกใช้ชุดทดสอบสำหรับโครงการ A ฉันได้รับข้อผิดพลาด: SyntaxError: การนำเข้าโทเค็นที่ไม่คาดคิด ซึ่งนำหน้าด้วยบรรทัดรหัสที่ผิดพลาดจากโครงการ B: (ฟังก์ชัน (ส่งออกต้องการโมดูล __filename __dirname) {นำเข้า createBrowserHistory จาก 'history / lib / createBrowserHistory'; iife ดูเหมือนจะเป็นสิ่งที่ npm หรืออาจเกี่ยวข้องกับ babel เนื่องจากไฟล์ต้นฉบับของฉันมีเพียง "import createBrowserHistory จาก" …

6
JavaScript Standard Style ไม่รู้จัก Mocha
ฉันมีไฟล์ทดสอบMochaที่มีลักษณะดังนี้: var expect = require('chai').expect var muting = require('../muting') describe('muting', function () { describe('init()', function () { it('should inject an object into twitter', function () { var twitter = 'twitter' muting.init(twitter) expect(muting.twitter).to.equal(twitter) }) }) }) เมื่อฉันเรียกใช้mochaจาก CLI มันจะรันการทดสอบสำเร็จ เมื่อฉันเรียกใช้standard(ปฏิบัติการสำหรับJavaScript Standard Style ) ฉันได้รับข้อผิดพลาดในฟังก์ชั่นกรอบงานของ Mocha ดังนี้: standard: Use JavaScript Standard Style …
94 javascript  mocha 

1
ความแตกต่างระหว่าง assert.equal และ assert.deepEqual ในการทดสอบ Javascript กับ Mocha?
ฉันใช้ Mocha เพื่อทดสอบโมดูลขนาดเล็กในแอปพลิเคชัน Express.js ในโมดูลนี้หนึ่งในฟังก์ชันของฉันส่งคืนอาร์เรย์ ฉันต้องการทดสอบว่าอาร์เรย์ถูกต้องสำหรับอินพุตที่กำหนดหรือไม่ ฉันทำเช่นนี้: suite('getWords', function(){ test("getWords should return list of numbers", function() { var result = ['555', '867', '5309']; assert.equal(result, getWords('555-867-5309')); }); }); เมื่อสิ่งนี้ทำงานฉันได้รับข้อผิดพลาดในการยืนยันดังต่อไปนี้: AssertionError: ["555","867","5309"] == ["555","867","5309"] อย่างไรก็ตามเมื่อฉันเปลี่ยนการทดสอบเป็น an assert.deepEqualการทดสอบก็ผ่านไปได้ด้วยดี ฉันสงสัยว่ามันเป็นกรณีของ==vs ===แต่ถ้าฉันเข้า [1,2,3] === [1,2,3] ในบรรทัดคำสั่ง node.js ฉันยังคงได้รับเท็จ เหตุใดอาร์เรย์จึงไม่เปรียบเทียบกับค่าอื่น ๆ (เช่น1 == 1) และอะไรคือความแตกต่างระหว่าง assert.equal …

5
คุณจะติดตั้งและเรียกใช้ Mocha ซึ่งเป็นโมดูลการทดสอบ Node.js ได้อย่างไร รับ“ mocha: command not found” หลังจากติดตั้ง
ฉันมีปัญหาในการทำให้Mochaทำงานตามที่คาดไว้และฉันอยากจะบอกว่าเป็นเอกสาร แต่ดูเหมือนจะไม่มีเอกสารมากนักในการทำให้สิ่งนั้นทำงานได้จริง ฉันได้ติดตั้งโดยใช้npm(ทั้งทั่วโลกและในเครื่อง) และทุกครั้งที่ฉันเรียกใช้ฉันจะได้รับ: $ mocha mocha: command not found โอเคฉันคิดว่ามันไม่ได้อยู่ในตัวฉันPATHฉันเลยลองเรียกใช้โดยตรง $ ./node_modules/mocha/bin/mocha execvp(): No such file or directory ในที่สุดฉันก็ลองกดปุ่มอีกbinไฟล์และได้รับ $ ./node_modules/mocha/bin/_mocha path.existsSync is deprecated. It is now called `fs.existsSync`. . ✔ 1 tests complete (1ms) ฉันจะดำเนินการทดสอบด้วยคำสั่งเดียวได้อย่างไร คำสาบานดูเหมือนจะยอมคุณ แต่ฉันได้ยินมาว่ามอคค่าเป็นทางเลือกที่ดีกว่าฉันดูเหมือนจะไม่สามารถทำงานได้อย่างถูกต้อง และมีความคิดเห็นเกี่ยวกับข้อผิดพลาดที่ฉันได้รับข้างต้นในความพยายามครั้งที่สามของฉันหรือไม่? แก้ไข: ฉันกำลังวิ่ง, Ubuntu 11.10 64 บิต โหนด js 0.7.5 npm …
92 node.js  mocha 

1
อะไรคือความแตกต่างระหว่าง `before ()` และ `beforeEach ()`?
เฉพาะสิ่งที่เป็นความแตกต่างระหว่างMocha 's before()และbeforeEach()? (คำถามเดียวกันสำหรับafter()และafterEach()) ฉันถือว่าbefore()รันหนึ่งครั้งต่อdescribe()บล็อกและbeforeEach()รันหนึ่งครั้งต่อการทดสอบ ( it()บล็อก) เป็นเช่นนั้นจริงหรือ? และเมื่อไหร่ที่ฉันจะเลือกใช้อันอื่น?

2
ฟังก์ชั่น Async ในมอคค่าก่อน () จะเสร็จสิ้นก่อนที่มัน () spec?
ฉันมีฟังก์ชันโทรกลับbefore()ซึ่งใช้สำหรับล้างฐานข้อมูล ทุกอย่างbefore()รับประกันว่าจะเสร็จสิ้นก่อนit()เริ่มหรือไม่? before(function(){ db.collection('user').remove({}, function(res){}); // is it guaranteed to finish before it()? }); it('test spec', function(done){ // do the test }); after(function(){ });

6
เข้าร่วมการทดสอบจากหลายไฟล์ด้วย mocha.js
ฉันกำลังพยายามเข้าร่วมการทดสอบทั้งหมดจากหลายไฟล์ในไฟล์เดียวโดยมีลักษณะดังนี้: describe('Controllers', function() { describe('messages.js', function() { require('./controllertests/messages').test(options); }) describe('users.js', function() { require('./controllertests/users').test(options); }) }) ฉันค่อนข้างแน่ใจว่านี่ไม่ใช่วิธีที่ดีที่สุดในการเข้าร่วมการทดสอบฉันมีตัวอย่างการค้นหาที่ผิดพลาดเกี่ยวกับวิธีการทำสิ่งนี้: s

2
วิธีทดสอบโค้ดแบ็กเอนด์ nodejs ด้วย Karma (testacular)
ฉันจะตั้งค่า Karma เพื่อเรียกใช้การทดสอบหน่วยแบ็กเอนด์ (เขียนด้วย Mocha) ได้อย่างไร หากฉันเพิ่มสคริปต์ทดสอบแบ็กเอนด์ของฉันลงในสคริปต์จะfiles = []ล้มเหลวโดยระบุว่าไม่ได้requireกำหนด
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.