Ceci est une application simple pour explorer TDD avec moka. L'application recevra deux jeux de mains de poker et définira la main gagnante.valeurs de propriété retournant indéfini après l'instanciation
Je rencontre des problèmes pour déterminer pourquoi ma valeur renvoie undefined après avoir invoqué une fonction sur l'objet. Après l'instanciation, les variables individuelles stockées correctement; mais la variable qui utilise une fonction pour récupérer ces valeurs antérieures les renvoie comme non définies. Je suis nouveau dans le développement de nœuds/web en général, et la seule chose que je pourrais penser c'est que c'est sync/async?
Le code se trouve sur github here
Voici le terminal:
images/undefined/undefined.img
{"suit":9,"val":1,"img":"images/undefined/undefined.img"}
Test card module
✓ card is not null
✓ has all arguments valid and present
✓ has image value property
1) has valid image path
3 passing (13ms)
1 failing
1) Test card module has valid image path:
AssertionError: expected [Function] to equal 'images/s/1.img'
at Context.<anonymous> (test/cardTest.js:35:36)
et suivant est le fichier de test:
'use strict'
const app = require('express'),
mocha = require('mocha'),
chai = require('chai')
let expect = chai.expect
let card = require('../app/card.js')
describe('Test card module',() => {
const myCard = new card.card('s', 1)
console.log(JSON.stringify(myCard))
it('card is not null',() => {
expect(myCard).is.not.null
})
it('has all arguments valid and present',() => {
expect(myCard).has.property('suit')
expect(myCard).has.property('val')
})
it('has image value property',() => {
expect(myCard).has.property('getCardImage')
})
it('has valid image path',() => {
expect(myCard.getCardImage).to.equal('images/s/1.img')
})
})
et enfin le fichier app:
'use strict'
function card(suit, val) {
this.suit = suit
this.val = val
this.img = this.getCardImage()
}
card.prototype.getCardImage =() => {
console.log('images/' + this.suit + '/' + this.val + '.img')
let location = 'images/' + this.suit + '/' + this.val + '.img'
return location
}
exports.card = card;
Toute explication serait très appréciée; Je vous remercie!
Eh bien la réponse est beaucoup plus simple que ce que j'attendais. J'ai également examiné les fonctions de la flèche et les problèmes qu'elles pouvaient poser avec 'ceci'. Tellement à apprendre, merci! https://derickbailey.com/2015/09/28/do-es6-arrow-functions-really-solve-this-in-javascript/ – gummyguppy