Jasmine.js imported function is not a function

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • Kleerkast
  • Registratie: November 2017
  • Laatst online: 28-09-2023
Mijn vraag
Om de JavaScript in mijn Laravel applicatie te testen, wil ik graag Jasmine.js gebruiken. Ik krijg alleen echter de foutmelding:
TypeError: fields.isFieldDark is not a function
Relevante software en hardware die ik gebruik
Jasmine.JS
Laravel

Wat ik al gevonden of geprobeerd heb
De test:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
let fields = require('../../public/js/games/light_and_dark');

describe("Check field functions", function() {

    it("is a dark field", function() {
        expect(fields.isFieldDark()).toBe(true);
        console.log(fields);
    });

    it("is a light field", function() {
        expect(true).toBe(true);
    });
});


Mijn code:

code:
1
2
3
function isFieldDark(field) {
    return true;
}


Ik heb niet heel veel verstand van JavaScript, en ik heb al veel online gezocht naar voorbeelden. Deze voorbeelden maken echter classes aan, iets wat ik (nu) nog niet wilt doen. Is dit wel nodig om het te kunnen testen?
Ik heb ook al gekeken naar export classes. Maar hiervoor moet ieder <script> blok deze class importeren, iets wat ik eigenlijk niet wil.

Beste antwoord (via Kleerkast op 10-04-2020 18:12)


  • I_IBlackI_I
  • Registratie: Januari 2014
  • Laatst online: 01:25
De require syntax is node specifiek, als je iets uit een ander bestand wilt requiren moet dat bestand die functie wel exporteren. Hier de docs over node modules.

Alle reacties


Acties:
  • Beste antwoord
  • 0 Henk 'm!

  • I_IBlackI_I
  • Registratie: Januari 2014
  • Laatst online: 01:25
De require syntax is node specifiek, als je iets uit een ander bestand wilt requiren moet dat bestand die functie wel exporteren. Hier de docs over node modules.

Acties:
  • 0 Henk 'm!

  • Kleerkast
  • Registratie: November 2017
  • Laatst online: 28-09-2023
I_IBlackI_I schreef op vrijdag 10 april 2020 @ 18:06:
De require syntax is node specifiek, als je iets uit een ander bestand wilt requiren moet dat bestand die functie wel exporteren. Hier de docs over node modules.
Geweldig. Bedankt! ik heb het nu aan de praat gekregen.
Maar betekend dit dat ik in elke script tag dit specifieke bestand moet requiren?

Acties:
  • 0 Henk 'm!

  • I_IBlackI_I
  • Registratie: Januari 2014
  • Laatst online: 01:25
Kleerkast schreef op vrijdag 10 april 2020 @ 18:13:
[...]
Maar betekend dit dat ik in elke script tag dit specifieke bestand moet requiren?
Over het algemeen zijn <script> tags iets van html voor de web browser. NodeJS is voor de webserver.

In elk bestand waar jij die functie nodig hebt moet je hem inderdaad importeren.

Acties:
  • 0 Henk 'm!

  • Juup
  • Registratie: Februari 2000
  • Niet online
Eventueel kun je ES6's export / import gebruiken.

Een wappie is iemand die gevallen is voor de (jarenlange) Russische desinformatiecampagnes.
Wantrouwen en confirmation bias doen de rest.


Acties:
  • 0 Henk 'm!

  • Ed Vertijsment
  • Registratie: Juli 2014
  • Laatst online: 09:29
Ik zou eens naar webpack kijken. Een testsetup voor js bouwen kan uitdagend zijn maar je leert wel snel veel tooling.

Webpack is een bundler (of hoe je het wil noemen), het voegt libraries samen door technieken als require/import naar de browser te brengen.

Het gebruiken i.c.m jasmine voor tests kan lastig zijn. Vaak wordt daarvoor karma gebruikt met een webpack config. Nogmaals als je zin hebt om er in te duiken, erg leerzaam.

Je zou ook naar jest kunnen kijken, Dat is afaik een meer ready made oplossing. Heb er zelf echter geen directe ervaring mee...
Pagina: 1