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

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

8
จะเขียนแบบทดสอบที่คาดว่าจะเกิดข้อผิดพลาดในจัสมินได้อย่างไร?
ฉันพยายามเขียนการทดสอบสำหรับกรอบการทดสอบจัสมินซึ่งคาดว่าจะเกิดข้อผิดพลาด ในขณะที่ฉันใช้บูรณาจัสมิน Node.js จาก GitHub ในโมดูลโหนดของฉันฉันมีรหัสต่อไปนี้: throw new Error("Parsing is not possible"); ตอนนี้ฉันพยายามเขียนการทดสอบที่คาดว่าจะเกิดข้อผิดพลาดนี้: describe('my suite...', function() { [..] it('should not parse foo', function() { [..] expect(parser.parse(raw)).toThrow(new Error("Parsing is not possible")); }); }); ฉันพยายามError()และตัวแปรอื่น ๆ และไม่สามารถหาวิธีทำให้มันใช้งานได้

8
การทดสอบ JavaScript ของจัสมิน - toBe กับ toEqual
สมมติว่าฉันมีดังต่อไปนี้: var myNumber = 5; expect(myNumber).toBe(5); expect(myNumber).toEqual(5); ทั้งการทดสอบข้างต้นจะผ่าน มีความแตกต่างระหว่างtoBe()และtoEqual()เมื่อมันมาถึงการประเมินตัวเลข? ถ้าเป็นเช่นนั้นฉันควรใช้อันใดอันหนึ่ง

15
การทดสอบหน่วยเชิงมุม 2: ไม่พบชื่อ 'อธิบาย'
ฉันกำลังติดตามการสอนนี้จาก angular.io ดังที่พวกเขากล่าวว่าฉันได้สร้างไฟล์ hero.spec.ts เพื่อสร้างการทดสอบหน่วย: import { Hero } from './hero'; describe('Hero', () => { it('has name', () => { let hero: Hero = {id: 1, name: 'Super Cat'}; expect(hero.name).toEqual('Super Cat'); }); it('has id', () => { let hero: Hero = {id: 1, name: 'Super Cat'}; expect(hero.id).toEqual(1); }); }); การทดสอบหน่วยทำงานเหมือนมีเสน่ห์ …

4
Jasmine.js เปรียบเทียบอาร์เรย์
มีวิธีในการ jasmine.js เพื่อตรวจสอบว่าสองอาร์เรย์มีค่าเท่ากันหรือไม่ตัวอย่างเช่น arr = [1, 2, 3] expect(arr).toBe([1, 2, 3]) expect(arr).toEqual([1, 2, 3]) ดูเหมือนว่าจะไม่ทำงาน

12
วิธีเขียนการทดสอบหน่วยสำหรับ Angular / TypeScript สำหรับวิธีการส่วนตัวด้วย Jasmine
คุณจะทดสอบฟังก์ชั่นส่วนตัวในเชิงมุม 2 ได้อย่างไร class FooBar { private _status: number; constructor( private foo : Bar ) { this.initFooBar(); } private initFooBar(){ this.foo.bar( "data" ); this._status = this.fooo.foo(); } public get status(){ return this._status; } } ทางออกที่ฉันพบ วางรหัสทดสอบไว้ในส่วนปิดหรือเพิ่มรหัสภายในส่วนที่ปิดซึ่งเก็บการอ้างอิงถึงตัวแปรโลคัลบนวัตถุที่มีอยู่ในขอบเขตด้านนอก ถอดแถบทดสอบออกโดยใช้เครื่องมือในภายหลัง http://philipwalton.com/articles/how-to-unit-test-private-functions-in-javascript/ โปรดแนะนำวิธีที่ดีกว่าในการแก้ปัญหานี้หากคุณทำสิ่งใดไปแล้ว? PS คำตอบส่วนใหญ่สำหรับคำถามที่คล้ายกันเช่นนี้ไม่ได้แก้ปัญหานั่นคือเหตุผลที่ฉันถามคำถามนี้ นักพัฒนาส่วนใหญ่บอกว่าคุณไม่ได้ทดสอบฟังก์ชั่นส่วนตัว แต่ฉันไม่ได้บอกว่ามันผิดหรือถูก แต่มีความจำเป็นที่เคสของฉันจะต้องทดสอบความเป็นส่วนตัว

7
วิธีการเข้าถึงและทดสอบฟังก์ชั่นภายใน (ไม่ใช่การส่งออก) ในโมดูล node.js?
ฉันพยายามหาวิธีการทดสอบฟังก์ชั่นภายใน (เช่นไม่ส่งออก) ใน nodejs (ควรมีมอคค่าหรือจัสมิน) และฉันก็ไม่รู้เลย! สมมติว่าฉันมีโมดูลเช่นนั้น: function exported(i) { return notExported(i) + 1; } function notExported(i) { return i*2; } exports.exported = exported; และการทดสอบต่อไปนี้ (มอคค่า): var assert = require('assert'), test = require('../modules/core/test'); describe('test', function(){ describe('#exported(i)', function(){ it('should return (i*2)+1 for any given i', function(){ assert.equal(3, test.exported(1)); assert.equal(5, test.exported(2)); }); …

4
toBe (จริง) vs toBeTruthy () vs toBeTrue ()
คือความแตกต่างระหว่างสิ่งที่expect(something).toBe(true), expect(something).toBeTruthy()และexpect(something).toBeTrue()? ทราบว่าtoBeTrue()เป็นการจับคู่ที่กำหนดเองที่รู้จักในjasmine-matchersหมู่ matchers ที่มีประโยชน์และมีประโยชน์อื่น ๆ เช่นหรือtoHaveMethod()toBeArrayOfStrings() คำถามนั้นมีความหมายทั่วไป แต่เป็นตัวอย่างจริงของโลกฉันกำลังทดสอบว่าองค์ประกอบนั้นแสดงprotractorขึ้นมา ฉันควรใช้ Matcher ประเภทใดในกรณีนี้ expect(elm.isDisplayed()).toBe(true); expect(elm.isDisplayed()).toBeTruthy(); expect(elm.isDisplayed()).toBeTrue();

9
ฉันจะมุ่งเน้นไปที่หนึ่ง spec ใน jasmine.js ได้อย่างไร
ฉันมีรายละเอียดความล้มเหลวมากมายจากการเปลี่ยนแปลงทางสถาปัตยกรรมที่ค่อนข้างใหญ่ ฉันต้องการทำงานแก้ไขพวกเขาทีละคนโดยติดแท็กแต่ละคนด้วย 'โฟกัส' jasmine.js มีคุณสมบัติเช่นนี้หรือไม่? ฉันสาบานว่าจะอ่านในจุดหนึ่งที่ทำ แต่ฉันไม่เห็นในเอกสาร
154 jasmine 

6
ใช้จัสมินเพื่อสอดแนมฟังก์ชั่นที่ไม่มีวัตถุ
ฉันยังใหม่กับจัสมีนและเพิ่งเริ่มใช้มัน ฉันมีไฟล์ไลบรารี js ที่มีฟังก์ชั่นมากมายซึ่งไม่เกี่ยวข้องกับวัตถุใด ๆ (เช่นเป็นระดับโลก) ฉันจะไปสืบเรื่องฟังก์ชันเหล่านี้ได้อย่างไร ฉันพยายามใช้หน้าต่าง / เอกสารเป็นวัตถุ แต่สายลับไม่ทำงานแม้ว่าจะมีการเรียกใช้ฟังก์ชัน ฉันพยายามห่อด้วยวัตถุปลอมดังนี้: var fakeElement = {}; fakeElement.fakeMethod = myFunctionName; spyOn(fakeElement, "fakeMethod"); และทดสอบด้วย expect(fakeElement.fakeMethod).toHaveBeenCalled(); สิ่งนี้ไม่ได้ผลเช่นเดียวกับสายลับไม่ทำงาน

8
ฉันจะจำลองบริการที่คืนสัญญาในการทดสอบหน่วยจัสมินของ AngularJS ได้อย่างไร
ฉันมีmyServiceสิ่งที่ใช้myOtherServiceซึ่งทำให้การโทรระยะไกลคืนสัญญา: angular.module('app.myService', ['app.myOtherService']) .factory('myService', [ myOtherService, function(myOtherService) { function makeRemoteCall() { return myOtherService.makeRemoteCallReturningPromise(); } return { makeRemoteCall: makeRemoteCall }; } ]) ในการสร้างการทดสอบหน่วยสำหรับmyServiceฉันต้องเยาะเย้ยmyOtherServiceเช่นนั้นmakeRemoteCallReturningPromiseวิธีการของมันจะให้สัญญา นี่คือวิธีที่ฉันทำ: describe('Testing remote call returning promise', function() { var myService; var myOtherServiceMock = {}; beforeEach(module('app.myService')); // I have to inject mock when calling module(), // and module() should …

3
มีวิธีใดที่จะแก้ไขสายลับจัสมินตามข้อโต้แย้ง?
ฉันมีฟังก์ชั่นฉันต้องการทดสอบวิธีที่เรียกว่าวิธี API ภายนอกสองครั้งโดยใช้พารามิเตอร์ที่แตกต่างกัน ฉันต้องการจำลอง API ภายนอกนี้ด้วยสายลับจัสมินและคืนสิ่งต่าง ๆ ตามพารามิเตอร์ มีวิธีใดบ้างที่จะทำเช่นนี้ในดอกมะลิ? สิ่งที่ดีที่สุดที่ฉันสามารถทำได้คือแฮ็คที่ใช้และ CallFake: var functionToTest = function() { var userName = externalApi.get('abc'); var userId = externalApi.get('123'); }; describe('my fn', function() { it('gets user name and ID', function() { spyOn(externalApi, 'get').andCallFake(function(myParam) { if (myParam == 'abc') { return 'Jane'; } else if (myParam …

9
วิธีดำเนินการทดสอบ spec เพียงหนึ่งเดียวด้วย angular-cli
ฉันมีโครงการสร้าง Angular2 ด้วย Angular-CLI (เบต้า 20) มีวิธีเรียกใช้การทดสอบกับไฟล์ spec เพียงไฟล์เดียวที่เลือกหรือไม่ ฉันเคยมีโครงการตามการเริ่มต้นอย่างรวดเร็วของ Angular2 และฉันสามารถเพิ่มรายละเอียดลงในไฟล์จัสมินด้วยตนเอง แต่ฉันไม่ทราบวิธีตั้งค่านอกการทดสอบกรรมหรือวิธี จำกัด การทดสอบกรรมให้กับไฟล์เฉพาะด้วย Angular-CLI builds

17
jasmine: Async callback ไม่ได้ถูกเรียกใช้ภายในระยะเวลาที่กำหนดโดย jasmine.DEFAULT_TIMEOUT_INTERVAL
ฉันมีบริการเชิงมุมที่เรียกว่าrequestNotificationChannel: app.factory("requestNotificationChannel", function($rootScope) { var _DELETE_MESSAGE_ = "_DELETE_MESSAGE_"; function deleteMessage(id, index) { $rootScope.$broadcast(_DELETE_MESSAGE_, { id: id, index: index }); }; return { deleteMessage: deleteMessage }; }); ฉันพยายามทดสอบบริการโดยใช้ดอกมะลิ: "use strict"; describe("Request Notification Channel", function() { var requestNotificationChannel, rootScope, scope; beforeEach(function(_requestNotificationChannel_) { module("messageAppModule"); inject(function($injector, _requestNotificationChannel_) { rootScope = $injector.get("$rootScope"); scope = rootScope.$new(); …

9
เรียกใช้ไฟล์ทดสอบไฟล์เดียว
มีวิธีเรียกใช้ng testไฟล์เดียวแทนที่จะเป็นชุดทดสอบทั้งหมดหรือไม่ ตามหลักการแล้วฉันต้องการรับลูปข้อเสนอแนะที่เร็วที่สุดเท่าที่จะเป็นไปได้เมื่อฉันแก้ไขไฟล์ แต่karmaดำเนินการทั้งชุดในการบันทึกแต่ละครั้งซึ่งค่อนข้างช้าเมื่อคุณสร้างชุดทดสอบที่ใหญ่พอ ซึ่งแตกต่างจากHow to execute only test spec with angular-cliในคำถามนั้นเกี่ยวกับการเรียกใช้ข้อมูลจำเพาะแต่ละรายการ นี่เกี่ยวกับการเรียกใช้ไฟล์แต่ละไฟล์ การแก้ปัญหาเกี่ยวข้องกับคุณสมบัติเฉพาะของจัสมินเหมือนกัน แต่ลักษณะของคำถามแตกต่างกันเล็กน้อย

6
ฉันจะทำให้ WebStorm จดจำวิธีการของ Jasmine ได้อย่างไร
ฉันมีโปรเจ็กต์ node.jsที่มีข้อมูลจำเพาะของจัสมิน ข้อมูลจำเพาะอยู่ในข้อมูลจำเพาะ / ไดเร็กทอรีย่อยและมีนามสกุล. spec.coffee ตามที่จัสมินโหนดต้องการ เมื่อฉันเปิดไฟล์ข้อมูลจำเพาะของฉันในWebStorm IDE การเรียกเข้าbeforeEachและdescribeและitแสดงด้วยสีน้ำเงินขีดเส้นใต้ด้วยคำแนะนำเครื่องมือ: "Unresolved function or method it ()" ดังนั้นแม้ว่าฉันจะใช้3.0 EAPและควรจะมีการสนับสนุนจัสมินจำนวนหนึ่งแต่ก็ไม่ได้รับความจริงที่ว่านี่เป็นไฟล์ข้อมูลจำเพาะของจัสมินโดยอัตโนมัติ ฉันลองเข้าไปที่ File> Settings> JavaScript Libraries และเพิ่ม Jasmine เป็นไลบรารี (ระบุพา ธ ไปยัง jasmine-2.0.0.rc1.js) จากนั้นไปที่เพจย่อยขอบเขตการใช้งานและตรวจสอบ "จัสมิน" ใน รายการแบบเลื่อนลงถัดจาก "โครงการ" แต่ไม่มีผลใด ๆ วิธีการของจัสมินยังคงแสดงว่ายังไม่ได้รับการแก้ไข ฉันจะบอก WebStorm ได้อย่างไรว่าไฟล์ทั้งหมดในไดเร็กทอรีย่อย spec และ / หรือไฟล์ทั้งหมดที่มีนามสกุล. spec.coffee เป็นการทดสอบของจัสมินและรับรู้ว่าจัสมิน API ใช้การทดสอบเหล่านั้นหรือไม่
135 jasmine  webstorm 

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