mercredi 11 octobre 2017

Qunit assert throws not working

I am trying to assert that a few steps in the code (visiting page, providing wrong card-number, password combination and clicking submit)should generate an error from the backend service - I have referred to this already..

and tried the suggestion of using Error Object as the second argument to assert.throws but that doesn't work for me.

i did see this link as well before posting my question, My problem is - I don't have control over the code that throws the exception/error in this case. (I cannot change it to say Ember.assert etc) I just want to be able to catch an erroneous case.

Secondly, I don't have a component in this case. Its a straight forward API call that's made when click on submit is done, basically an action submitAuthForm is called in controller which calls ember cli mirage scenario that returns the following object problems object.

return new Response(401,{'X-Auth-Token': 'wrong-username-password-combination'},failResponse401);

and the returned object looks like

var failResponse401 = {
                problems: [ {
                    field: null,
                    index: null,
                    value: null,
                    code: '0006',
                    subCode: '',
                    details: {},
                    _type: 'error'
                } ]
            };

We have a node_module dependency on an in-house exceptions kit that throws an Error object based on this.

Here's my Qunit test

test('ERROR_CASE_visiting /signon, provide cardNumber(2342314) and ' +
'password, submit and expect to see invalid cardnumber/password error', 
function (assert) {

 assert.expect(2);
 assert.throws(
function () {
  visit('/signon');
  fillIn('#a8n-signon-card-number input', '2342314');
  fillIn('#a8n-signon-password input', 'password');
  click('#a8n-signon-submit-button button');
},
Error,
"Error Thrown"
 );
});

I keep getting this error from Qunit

Error Thrown@ 110 ms
Expected:   
function Error( a ){
  [code]
}
Result:     
undefined
Diff:   
function Error( a ){
  [code]
}defined
Source:     
    at Object.<anonymous> (http://localhost:7357/assets/tests.js:175:12)
    at runTest (http://localhost:7357/assets/test-support.js:3884:30)
    at Test.run (http://localhost:7357/assets/test-support.js:3870:6)
    at http://localhost:7357/assets/test-support.js:4076:12
    at Object.advance (http://localhost:7357/assets/test-support.js:3529:26)
    at begin (http://localhost:7357/assets/test-support.js:5341:20)
API rejected the request because of : []@ 1634 ms
Expected:   
true
Result:     
false
Source:     
Error: API rejected the request because of : []
    at Class.init (http://localhost:7357/assets/vendor.js:172237:14)
    at Class.superWrapper [as init] (http://localhost:7357/assets/vendor.js:55946:22)
    at new Class (http://localhost:7357/assets/vendor.js:51657:19)
    at Function._ClassMixinProps.create (http://localhost:7357/assets/vendor.js:51849:12)
    at Function.createException (http://localhost:7357/assets/vendor.js:172664:16)
    at Class.<anonymous> (http://localhost:7357/assets/vendor.js:133592:72)
    at ComputedPropertyPrototype.get (http://localhost:7357/assets/vendor.js:32450:27)
    at Object.get (http://localhost:7357/assets/vendor.js:37456:19)
    at Class.get (http://localhost:7357/assets/vendor.js:50194:26)
    at http://localhost:7357/assets/vendor.js:133645:30

Is there anything else that i can try to get it to work. Is there someway i could somehow pass this test, by wrapping the returned response somehow in a way that it doesn't break my test altogether.




Aucun commentaire:

Enregistrer un commentaire