2013-07-30 4 views
0

J'ai une observable qui émet des objets JS, et je voudrais dans mes tests affirmer que les transformations observables que je fais produiront les objets JS corrects. Le problème est que je ne comprends pas le genre d'assertions que rx.js utilise car les tests qui devraient échouer passent. Par exemple, j'aimerais que ce test, based on one from the examples directory, échoue, mais ce n'est pas le cas. Notez que la valeur produite est { prop: 42 } et celle attendue est { prop: 43 }.rx.js teste l'égalité des objets par structure

test('returnValue Basic', function() { 
    var scheduler = new TestScheduler(); 
    var results = scheduler.startWithCreate(function() { 
     return Observable.returnValue({ prop: 42 }, scheduler); 
    }); 

    var expectedMessages = [ 
     onNext(201, { prop: 43 }), 
     onCompleted(201) 
    ]; 

    CollectionAssert.assertEqual(expectedMessages, results.messages); 
}); 

Est-ce que quelqu'un sait quel est le problème, et comment puis-je contourner ce problème? Je comprends l'égalité des objets dans JavaScript, mais c'est la prochaine étape. Il est évident à partir du test ci-dessus que rx.js n'utilise ni l'égalité de référence, ni l'égalité structurelle.

Répondre

0

Avez-vous recherché dans votre console des erreurs? Les frameworks de test JS meurent généralement en face du code de test qui accède aux propriétés sur undefined.

Sans voir votre dossier complet de JS Je ne peux que deviner que vous avez pas défini les variables globales: TestScheduler, Observable, CollectionAssert, onNext, onCompleted.

+0

Merci d'avoir essayé de nous aider. J'ai rassemblé plus d'informations, comme vous pouvez le voir ici: https://gist.github.com/mattpodwysocki/6114182. En bref, c'est un bug combiné à une ... caractéristique manquante. BTW, l'extrait de ma question est celui-ci: https://github.com/Reactive-Extensions/RxJS/blob/master/examples/testing/qunit/tests.js#L17-L33. La seule chose que j'ai modifiée est la valeur émise. –

+0

ah là vous allez :) – Brandon