วิธีทดสอบโค้ดแบ็กเอนด์ nodejs ด้วย Karma (testacular)


87

ฉันจะตั้งค่า Karma เพื่อเรียกใช้การทดสอบหน่วยแบ็กเอนด์ (เขียนด้วย Mocha) ได้อย่างไร หากฉันเพิ่มสคริปต์ทดสอบแบ็กเอนด์ของฉันลงในสคริปต์จะfiles = []ล้มเหลวโดยระบุว่าไม่ได้requireกำหนด


นี้สามารถทำได้ลองดูที่โครงการของฉัน: github.com/noamtcohen/Narma
noamtcohen

คำตอบ:


83

คุณไม่ทำ Karma ใช้สำหรับทดสอบโค้ดบนเบราว์เซอร์เท่านั้น หากคุณมีโปรเจ็กต์ที่มีการทดสอบมอคค่าในแบ็กเอนด์และกรรม / มอคค่าที่ส่วนหน้าให้ลองแก้ไข package.json ของคุณภายใต้สคริปต์เพื่อตั้งค่าการทดสอบเป็น:mocha -R spec && karma run karma.con

จากนั้นหากnpm testส่งกลับเป็นจริงคุณจะรู้ว่าการกระทำหรือปรับใช้นั้นปลอดภัย


ขอบคุณ! ฉันพบวิธีแก้ปัญหาโดยใช้ Grunt ซึ่งฉันวางแผนไว้แล้วในการตั้งค่าในโครงการของฉัน ดูคำตอบของฉันเอง
Sylvain

โดยพื้นฐานแล้วนักวิ่งทดสอบ JS ทั้งหมดต้องพึ่งพาเบราว์เซอร์หรือไม่? มันไม่มีประโยชน์

4
มอคค่าและจัสมินไม่ต้องพึ่งพาเบราว์เซอร์และเมื่อคุณต้องการใช้เบราว์เซอร์ที่ไม่มีหัวให้ลองใช้ phantomjs
Dan Kohn

2
สังเกตว่าการใช้เบราว์เซอร์ในการทดสอบไม่ใช่สิ่งที่เลวร้าย มีการทดสอบหลายประเภทและการทดสอบแบบ end to end นั้นใช้ได้ขึ้นอยู่กับความต้องการของคุณ แม้แต่การทดสอบการถดถอยทางสายตา (ดู huxley ของ facebook) ก็มีความสำคัญในบางกรณี
Ciro Costa

15

ดูเหมือนว่าจะไม่สามารถทำได้ (ขอบคุณ @dankohn) นี่คือวิธีแก้ปัญหาของฉันโดยใช้ Grunt:

  • Karma: อัปเดตไฟล์arma.conf.jsของคุณ

    • ชุด autoWatch = false;
    • ชุด singleRun = true;
    • ตั้งค่าbrowsers = ['PhantomJS'];(เพื่อให้มีผลลัพธ์แบบอินไลน์)
  • ฮึดฮัด:

    • npm install grunt-contrib-watch grunt-simple-mocha grunt-karma
    • กำหนดค่างานฮึดฮัดสองงาน (ดูไฟล์ grunt ด้านล่าง)

Gruntfile.js:

module.exports = function (grunt) {
  grunt.loadNpmTasks('grunt-simple-mocha');
  grunt.loadNpmTasks('grunt-karma');

  grunt.initConfig({
    simplemocha: {
      backend: {
        src: 'test/server-tests.js'
      }
    },
    karma: {
      unit: {
        configFile: 'karma.conf.js'
      }
    }
  });

  // Default task.
  grunt.registerTask('default', ['simplemocha', 'karma']);
};
  • Grunt (ทางเลือก): กำหนดค่า grunt-watch ให้ทำงานหลังจากเปลี่ยนไฟล์ข้อมูลจำเพาะหรือไฟล์ที่จะทดสอบ

  • รันทั้งหมดโดยใช้gruntคำสั่ง


3
ดังนั้นคุณยังคงต้องใช้เบราว์เซอร์เพียงแต่ว่าเบราว์เซอร์เป็นแบบไร้หัว ไร้ประโยชน์แค่ไหนก็ไม่ใช้กรรมสำหรับการทดสอบฝั่งเซิร์ฟเวอร์

5
สวัสดีนี่ไม่ได้ใช้กรรมสำหรับแบ็กเอนด์นี่คือการใช้มอคค่าดังนั้นจึงไม่มีเบราว์เซอร์ นี่เป็นเพียงวิธีที่สะดวกในการเรียกใช้การทดสอบทั้งหมดของคุณทันทีที่คุณบันทึกไฟล์
Sylvain

ในขณะที่ฉันไม่ต้องการ Karma จริงๆสำหรับสิ่งที่ฉันกำลังทำสิ่งนี้ทำให้ฉันไปสู่เส้นทางที่ง่ายในการตั้งค่าฮึดฮัดเพื่อเรียกใช้การทดสอบมอคค่าของฉันโดยอัตโนมัติดังนั้นขอบคุณสำหรับสิ่งนั้น
Michael Oryl

แนวทางที่น่าสนใจ แต่คุณจะแน่ใจได้อย่างไรว่า Sails globals ได้รับการยอมรับอย่างเหมาะสมในการทดสอบของคุณ?
dmvianna
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.