Skip to Content
1
Mar 28 at 09:25 AM

cds.test with multitenancy

304 Views

Hi Experts,

I try to follow the CAP Documentation regarding testing: https://cap.cloud.sap/docs/node.js/cds-test
Unfortunately, there is no information regarding testing a multitenant application.

So far, the only example I could find is this: https://github.com/SAP-samples/btp-cf-cap-multitenant-susaas/blob/advanced/test/test.js

I tested this in a small multitenant bookshop application and it works fine.

Then, I tried the same for my actual application (in my case, my profile is named "mtx"):

const cds = require('@sap/cds/lib')
const project = __dirname+'/..' // The project's root folder //const { expect, GET } = cds.test(project) //<----------------------without mtx it works fine! const { expect, GET } = cds.test(project,"--profile","mtx")


describe('Multitenancy is up and running', () => {
it('Subscribe for tenant t1', async () => {
var { 'cds.xt.DeploymentService': ds } = cds.services
await ds.subscribe("t1")
})
})

But with the mtx profile, I receive an error message, which mentions a timeout when running cds.test(). Is there a way to raise the cds.test() timeout to like 10 seconds or so? Or is this just a misleading error message, because when running without mtx, it's working fine.

Full error log:

● Multitenancy is up and running › Subscribe for tenant t1

thrown: "Exceeded timeout of 5000 ms for a hook.
Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout."

1 | const cds = require('@sap/cds/lib')
2 | const project = __dirname+'/..' // The project's root folder
> 3 | const { expect, GET } = cds.test(project,"--profile","mtx")
| ^
4 |
5 |
6 | describe('Multitenancy is up and running', () => {

at global.before (node_modules/@sap/cds/lib/utils/cds-test.js:108:40)
at Test.run (node_modules/@sap/cds/lib/utils/cds-test.js:21:5)
at cds.test (node_modules/@sap/cds/lib/utils/cds-test.js:167:62)
at Object.test (test/mtx.test.js:3:29)


● Cannot log after tests are done. Did you forget to wait for something async in your test?
Attempted to log "[cds] - loaded model from 12 file(s):
".

at console.info (node_modules/@jest/console/build/BufferedConsole.js:153:10)
at Function.logger.info (node_modules/@sap/cds/lib/log/cds-log.js:93:59)
at cds.<anonymous> (node_modules/@sap/cds/bin/serve.js:263:9)
at cds.emit (node_modules/@sap/cds/lib/index.js:18:23)
at _finalize (node_modules/@sap/cds/lib/compile/load.js:33:22)
at node_modules/@sap/cds/lib/compile/load.js:28:25
at cds_server (node_modules/@sap/cds/server.js:42:15)
at Object.serve (node_modules/@sap/cds/bin/serve.js:196:18)


● Cannot log after tests are done. Did you forget to wait for something async in your test?
Attempted to log " db/data-model.cds".

● Cannot log after tests are done. Did you forget to wait for something async in your test?
Attempted to log " node_modules/@sap/cds-mtxs/srv/bootstrap.cds".

at console.log (node_modules/@jest/console/build/BufferedConsole.js:156:10)
at cds.<anonymous> (node_modules/@sap/cds/bin/serve.js:264:47)
at cds.emit (node_modules/@sap/cds/lib/index.js:18:23)
at _finalize (node_modules/@sap/cds/lib/compile/load.js:33:22)
at node_modules/@sap/cds/lib/compile/load.js:28:25
at cds_server (node_modules/@sap/cds/server.js:42:15)
at Object.serve (node_modules/@sap/cds/bin/serve.js:196:18)


● Cannot log after tests are done. Did you forget to wait for something async in your test?
Attempted to log " node_modules/@sap/cds/common.cds".

at console.log (node_modules/@jest/console/build/BufferedConsole.js:156:10)
at cds.<anonymous> (node_modules/@sap/cds/bin/serve.js:264:47)
at cds.emit (node_modules/@sap/cds/lib/index.js:18:23)
at _finalize (node_modules/@sap/cds/lib/compile/load.js:33:22)
at node_modules/@sap/cds/lib/compile/load.js:28:25
at cds_server (node_modules/@sap/cds/server.js:42:15)
at Object.serve (node_modules/@sap/cds/bin/serve.js:196:18)


● Cannot log after tests are done. Did you forget to wait for something async in your test?
Attempted to log "".

at console.log (node_modules/@jest/console/build/BufferedConsole.js:156:10)
at cds.<anonymous> (node_modules/@sap/cds/bin/serve.js:265:13)
at cds.emit (node_modules/@sap/cds/lib/index.js:18:23)
at _finalize (node_modules/@sap/cds/lib/compile/load.js:33:22)
at node_modules/@sap/cds/lib/compile/load.js:28:25
at cds_server (node_modules/@sap/cds/server.js:42:15)
at Object.serve (node_modules/@sap/cds/bin/serve.js:196:18)


ReferenceError: You are trying to `import` a file after the Jest environment has been torn down. From test/mtx.test.js.

at Object.<anonymous> (node_modules/@sap/cds/lib/lazy.js:45:35)
at Object.get [as nodejs] (node_modules/@sap/cds/lib/lazy.js:34:40)
at cds_server (node_modules/@sap/cds/server.js:43:31)

Thanks & Regards,
Nico