totaljs / framework

Node.js framework
http://www.totaljs.com
Other
4.36k stars 450 forks source link

How to store information from a test to reuse it #779

Closed LandyCuadra closed 3 years ago

LandyCuadra commented 3 years ago

Hi, I am trying to do some test over my backend in the example below I create a client and it returns an object containing an id, after that I test the method to get client by Id... but would like to reuse the id I got from the last method.... is there a way to do that?

I tried creating a variable called clientId assign it in the save response then try to call it in get method url, but I get null in the var as I define it on creation...

` let clientId = null;

TEST('Test Save Client', '/client', function(builder){ builder.method('post'); builder.json({ 'address': 'TEST place', 'email': 'test@email.com', 'name': 'TEST name' }); builder.exec(function(err, response){ clientId = response.value?.newClient; OK(response.success === true, 'response success equals true'); OK(typeof response.value === 'object', 'response value is type object'); OK(response.value instanceof Object, 'response value is instance of object'); OK(response.value?.newClient, 'newClient has truthy value'); OK(Object.prototype.hasOwnProperty.call(response.value, 'newClient'), 'response value newClient node'); OK(Object.keys(response.value).length > 0, 'response value is not empty'); }); });

TEST('Test Get Client By Id', /client/${clientId}, function(builder){ builder.method('get'); builder.exec(function(err, response){ OK(response.success === true, 'response success equals true'); OK(typeof response.value === 'object', 'response value is type object'); OK(response.value instanceof Object, 'response value is instance of object'); OK(Object.keys(response.value).length > 0, 'response value is not empty'); }); }); `

petersirka commented 3 years ago

Hi. Try to declare a new TEST() into the callback of the TEST() method. Total.js v4 supports better unit-testing: https://docs.totaljs.com/total4/40842001ok51c/

LandyCuadra commented 3 years ago

how can I achieve that in Total.js V4, because I don't see a way nest test in the documentatition?

petersirka commented 3 years ago

We will update documentation.

self.runtest('API  /apiv1/  users_read').callback(function(err, value) {
    self.runtest(...);
    self.runtest(...);
    self.runtest(...);
});

We will improve documentation for testing next week, it's not good right now.

LandyCuadra commented 3 years ago

Thank you for everything, it works well. will check if I can upgrade the version to V4