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

จัสมินเป็นกรอบการพัฒนาที่ขับเคลื่อนด้วยพฤติกรรม (BDD) สำหรับการทดสอบโค้ด JavaScript จัสมินไม่มีการพึ่งพาภายนอกและไม่ต้องการ DOM

3
ฉันจะอ่านรายงานความครอบคลุมของอิสตันบูลได้อย่างไร
ฉันใช้จัสมินในการทดสอบหน่วยของฉันมาโดยตลอด แต่เมื่อเร็ว ๆ นี้ฉันเริ่มใช้อิสตันบูลเพื่อให้รายงานการครอบคลุมรหัสแก่ฉัน ฉันหมายความว่าฉันเข้าใจสาระสำคัญของสิ่งที่พวกเขาพยายามจะบอกฉัน แต่ฉันไม่รู้จริงๆว่าเปอร์เซ็นต์เหล่านี้เป็นตัวแทนของอะไร (Stmts, Branches, Funcs, Lines) จนถึงตอนนี้ Googling ฉันไม่พบคำอธิบาย / แหล่งข้อมูลที่ชัดเจน คำถาม : เหมือนที่ฉันบอกว่าฉันเข้าใจสาระสำคัญของมัน แต่มีคนโพสต์คำอธิบายที่เหมาะสมหรือลิงก์ไปยังคำอธิบายที่เหมาะสมได้หรือไม่? คำถามระดับอุดมศึกษา : มีวิธีใดบ้างในการระบุว่าส่วนใดของโค้ดของคุณไม่ครอบคลุม? จนถึงตอนนี้โดยไม่ต้องบ่นรายงานนี้โดยทั่วไปฉันคาดเดา -------------------|-----------|-----------|-----------|-----------| File | % Stmts |% Branches | % Funcs | % Lines | -------------------|-----------|-----------|-----------|-----------| controllers/ | 88.1 | 77.78 | 78.57 | 88.1 | dashboard.js | …

3
React Enzyme ค้นหาโหนดที่สอง (หรือที่ n)
ฉันกำลังทดสอบองค์ประกอบการตอบสนองด้วยการเรนเดอร์ตื้นของเอนไซม์จัสมิน ทำให้ง่ายขึ้นที่นี่เพื่อวัตถุประสงค์ของคำถามนี้ ... function MyOuterComponent() { return ( <div> ... <MyInnerComponent title="Hello" /> ... <MyInnerComponent title="Good-bye" /> ... </div> ) } MyOuterComponentมี 2 ​​อินสแตนซ์MyInnerComponentและฉันต้องการทดสอบอุปกรณ์ประกอบฉากในแต่ละอัน คนแรกที่ฉันรู้วิธีทดสอบ ฉันใช้findกับfirst... expect(component.find('MyInnerComponent').first()).toHaveProp('title', 'Hello'); อย่างไรก็ตามฉันกำลังดิ้นรนเพื่อทดสอบตัวอย่างที่สองของMyInnerComponentไฟล์. ฉันหวังว่าสิ่งนี้จะได้ผล ... expect(component.find('MyInnerComponent').second()).toHaveProp('title', 'Good-bye'); หรือแม้แต่สิ่งนี้ ... expect(component.find('MyInnerComponent')[1]).toHaveProp('title', 'Good-bye'); แต่แน่นอนว่าทั้งสองอย่างข้างต้นไม่ได้ผล ฉันรู้สึกว่าตัวเองหายไปอย่างชัดเจน แต่เมื่อฉันดูเอกสารฉันไม่เห็นตัวอย่างที่คล้ายคลึงกัน ใคร?
130 reactjs  jasmine  enzyme 

12
คำสั่งการทดสอบหน่วย AngularJS พร้อม templateUrl
ฉันมีคำสั่ง AngularJS ที่มีการtemplateUrlกำหนด ฉันกำลังพยายามทดสอบหน่วยกับจัสมิน JavaScript ของจัสมินของฉันมีลักษณะดังต่อไปนี้ตามคำแนะนำของสิ่งนี้ : describe('module: my.module', function () { beforeEach(module('my.module')); describe('my-directive directive', function () { var scope, $compile; beforeEach(inject(function (_$rootScope_, _$compile_, $injector) { scope = _$rootScope_; $compile = _$compile_; $httpBackend = $injector.get('$httpBackend'); $httpBackend.whenGET('path/to/template.html').passThrough(); })); describe('test', function () { var element; beforeEach(function () { element = $compile( '<my-directive></my-directive>')(scope); …

10
วิธีการสอดแนมบนคุณสมบัติมูลค่า (แทนที่จะเป็นวิธีการ) ด้วยจัสมิน
จัสมินspyOnเป็นสิ่งที่ดีในการเปลี่ยนพฤติกรรมของวิธีการ แต่มีวิธีใดในการเปลี่ยนคุณสมบัติค่า (แทนที่จะเป็นวิธีการ) สำหรับวัตถุหรือไม่? รหัสอาจเป็นดังนี้: spyOn(myObj, 'valueA').andReturn(1); expect(myObj.valueA).toBe(1);

6
ฉันจะตรวจสอบเหตุการณ์ jQuery AJAX กับ Jasmine ได้อย่างไร
ฉันพยายามใช้ Jasmine เพื่อเขียนข้อกำหนด BDD สำหรับคำขอ jQuery AJAX พื้นฐาน ฉันกำลังใช้ Jasmine ในโหมดสแตนด์อโลน (เช่นผ่านSpecRunner.html) ฉันได้กำหนดค่า SpecRunner ให้โหลด jquery และไฟล์. js อื่น ๆ มีความคิดที่ทำไมสิ่งต่อไปนี้ไม่ได้ผล? has_returned ไม่เป็นความจริงแม้แต่คิดว่า "yuppi!" การแจ้งเตือนปรากฏขึ้นได้ดี describe("A jQuery ajax request should be able to fetch...", function() { it("an XML file from the filesystem", function() { $.ajax_get_xml_request = { has_returned : false …
114 javascript  jquery  ajax  jasmine  bdd 

7
การใส่ล้อเลียนลงในบริการ AngularJS
ฉันมีบริการ AngularJS ที่เขียนไว้และฉันต้องการทดสอบหน่วย angular.module('myServiceProvider', ['fooServiceProvider', 'barServiceProvider']). factory('myService', function ($http, fooService, barService) { this.something = function() { // Do something with the injected services }; return this; }); ไฟล์ app.js ของฉันได้ลงทะเบียนสิ่งเหล่านี้: angular .module('myApp', ['fooServiceProvider','barServiceProvider','myServiceProvider'] ) ฉันสามารถทดสอบว่า DI ทำงานได้ดังนี้: describe("Using the DI framework", function() { beforeEach(module('fooServiceProvider')); beforeEach(module('barServiceProvider')); beforeEach(module('myServiceProvder')); var service; beforeEach(inject(function(fooService, barService, …

1
QUnit vs จัสมิน? [ปิด]
ปิด . คำถามนี้เป็นคำถามความคิดเห็นตาม ขณะนี้ยังไม่ยอมรับคำตอบ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบได้ด้วยข้อเท็จจริงและการอ้างอิงโดยแก้ไขโพสต์นี้ ปิดให้บริการใน7 ปีที่ผ่านมา ปรับปรุงคำถามนี้ อะไรคือความแตกต่างหลักระหว่างกรอบการทดสอบทั้งสองนี้? ฉันเป็นมือใหม่สำหรับการทดสอบการพัฒนาที่ขับเคลื่อนโดยสิ้นเชิงและเริ่มตั้งแต่ต้น

4
ฉันจะทดสอบบริการ AngularJS กับ Jasmine ได้อย่างไร
(มีคำถามที่เกี่ยวข้องที่นี่: การทดสอบจัสมินไม่เห็นโมดูล AngularJS ) ฉันแค่ต้องการทดสอบบริการโดยไม่ต้อง bootstrapping Angular ฉันได้ดูตัวอย่างและบทแนะนำแล้ว แต่ฉันไม่ได้ไปไหน ฉันมีเพียงสามไฟล์: myService.js: ที่ฉันกำหนดบริการ AngularJS test_myService.js: ที่ฉันกำหนดการทดสอบจัสมินสำหรับบริการ specRunner.html: ไฟล์ HTML ที่มีการกำหนดค่าจัสมินปกติและที่ที่ฉันนำเข้าไฟล์อื่นอีกสองไฟล์ก่อนหน้านี้และ Jasmine, Angularjs และ angular-mocks.js นี่คือรหัสสำหรับบริการ (ซึ่งทำงานได้ตามที่คาดไว้เมื่อฉันไม่ได้ทดสอบ): var myModule = angular.module('myModule', []); myModule.factory('myService', function(){ var serviceImplementation = {}; serviceImplementation.one = 1; serviceImplementation.two = 2; serviceImplementation.three = 3; return serviceImplementation }); ในขณะที่ฉันกำลังพยายามทดสอบบริการแบบแยกส่วนฉันควรจะสามารถเข้าถึงและตรวจสอบวิธีการของพวกเขา คำถามของฉันคือฉันจะฉีดบริการในการทดสอบโดยไม่ต้องบูต …
108 angularjs  jasmine 

2
วิธีรับค่าตอบแทนที่แตกต่างกันสำหรับการโทรหลายครั้งกับสายลับจัสมิน
สมมติว่าฉันกำลังสอดแนมวิธีการเช่นนี้: spyOn(util, "foo").andReturn(true); ฟังก์ชันภายใต้การทดสอบเรียกutil.fooใช้หลายครั้ง เป็นไปได้ไหมที่จะให้สายลับกลับมาtrueในครั้งแรกที่ถูกเรียก แต่กลับfalseครั้งที่สอง? หรือมีวิธีอื่นที่จะไปเกี่ยวกับเรื่องนี้?

9
ฉันจะทดสอบว่าค่า“ มากกว่าหรือเท่ากับ” ในจัสมินได้อย่างไร
ฉันต้องการยืนยันว่าค่าเป็นทศนิยม (หรือ 0) ดังนั้นตัวเลขควรมากกว่าหรือเท่ากับศูนย์และน้อยกว่า 1 describe('percent',function(){ it('should be a decimal', function() { var percent = insights.percent; expect(percent).toBeGreaterThan(0); expect(percent).toBeLessThan(1); }); }); ฉันจะเลียนแบบ "> = 0" ได้อย่างไร
100 javascript  tdd  jasmine 

14
คาดว่าอาร์เรย์จะเท่ากับละเว้นคำสั่ง
ด้วย Jasmine มีวิธีทดสอบว่า 2 อาร์เรย์มีองค์ประกอบเดียวกันหรือไม่ แต่ไม่จำเป็นต้องอยู่ในลำดับเดียวกัน? กล่าวคือ array1 = [1,2,3]; array2 = [3,2,1]; expect(array1).toEqualIgnoreOrder(array2);//should be true

11
ฉันจะเปลี่ยนระยะหมดเวลาของข้อมูลจำเพาะ async ของโหนดจัสมินได้อย่างไร
ฉันจะให้การทดสอบนี้ผ่านโดยไม่หันไปวิ่ง / รอบล็อกได้อย่างไร it("cannot change timeout", function(done) { request("http://localhost:3000/hello", function(error, response, body){ expect(body).toEqual("hello world"); done(); }); });
92 node.js  jasmine 

5
ตรวจสอบความเท่าเทียมกันของวัตถุในจัสมิน
จัสมินมีตัวจับคู่toBeและtoEqual. หากฉันมีวัตถุเช่นนี้: function Money(amount, currency){ this.amount = amount; this.currency = currency; this.sum = function (money){ return new Money(200, "USD"); } } และลองเปรียบเทียบnew Money(200, "USD")และผลลัพธ์ของผลรวมตัวจับคู่ในตัวเหล่านี้จะไม่ทำงานตามที่คาดไว้ ฉันได้จัดการเพื่อใช้วิธีแก้ปัญหาตามequalsวิธีการที่กำหนดเองและตัวจับคู่แบบกำหนดเอง แต่ดูเหมือนจะได้ผลมาก วิธีมาตรฐานในการเปรียบเทียบวัตถุในจัสมินคืออะไร?

1
จะกำหนดค่า Jasmine ใน Rails 6 ได้อย่างไร?
ฉันจะกำหนดค่าจัสมินได้อย่างไรในสภาพแวดล้อม Rails 6 (ที่ Webpack แทนที่ไพพ์ไลน์ของสินทรัพย์สำหรับ Javascript) ดังนั้นฉันสามารถทดสอบโมดูล Javascript ที่ฉันเขียนขึ้นสำหรับแอพของฉันได้อย่างไร ฉันติดตั้งพลอยจัสมิน, วิ่งrails generate jasmine:install, และแก้ไขjasmine.ymlให้ชี้ไปที่ตำแหน่งของแหล่งจาวาสคริปต์และข้อมูลจำเพาะของฉัน ปัญหาคือฉันไม่สามารถใช้คำสั่งนำเข้า / ส่งออก (ตัวอย่างเช่นพยายามโหลดโมดูลแรกของฉันไปที่ผลการทดสอบในข้อผิดพลาดนี้ใน Chrome: Uncaught SyntaxError: Unexpected token 'export') จากสิ่งที่ฉันสามารถบอกได้ฉันต้องตั้งค่าจัสมินให้ใช้บาเบล แต่ฉันไม่มีโชคในการค้นหาคำแนะนำเกี่ยวกับวิธีการทำสิ่งนี้ในเค้าโครง Rails 6 ใหม่
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.