← Back to Community
unit test for node project (teams for education)
Profile icon
robertrodini1

How to use the Input field for unit tests for node projects in Teams for Education? The online documentation doesn't use it. Is that because it is not implemented?

P.S. I would like to link to my Teams For Education example but I can't so I used change-calculator-CLI which is similar but not identical.

Voters
Profile icon
MichaelMcDowell
Profile icon
robertrodini1
Comments
hotnewtop
Profile icon
HarveyPederson

Hi, I want to know how to use the Input field for unit tests for node projects in Teams for Education and I am glad I have found my answer over here. Thanks all for your suggestions. I also found https://www.sportsgossip.com/modern-students-and-their-problems-in-education/ website on a google search in which I found about modern students and their problems in education.

Profile icon
robertrodini1

Another alternative is to enter a representation of ^D on a separate line of the input value. This doesn't work as I have tried an HTML character code and ^D. I need Replit staff to say if there is a way to do this.

Profile icon
robertrodini1

I've done some research and I think the answer may lie within the jest testing support for mocks. I would need to mock stdin since that's how I get simple input:

var fs = require("fs"); var input = fs.readFileSync(0).toString();

I would need help from Replit staff to see how to fit the mock into their use of jest. Here are a couple of articles on jest mocking:
https://medium.com/@altshort/unit-testing-node-cli-apps-with-jest-2cd4adc599fb
https://jestjs.io/docs/manual-mocks#mocking-node-modules

Profile icon
JacobBirch

Inside of node, you can do something like:

let whateverToPrompt = prompt('Question here')

and refer to whateverToPrompt later to get the answer they put.

Profile icon
robertrodini1

What you're suggesting is similar to the what I have in change-calculator-CLI project above. Reading from the tty is impossible in the unit test that I created for above.

Note that my question is specifically for unit test for Teams for Education projects where I am able to provide an input value for each test. Even this doesn't seem to work at all.

Profile icon
MichaelMcDowell

@robertrodini1

You ever figure this out? You're using unit tests and not the input/output test they have for education correct?

I was using the education input/output tests but trying to input 2 variables and just can't get that working. I've since been experimenting with unit tests and jest but haven't been able to handle prompt().

Profile icon
robertrodini1

@MichaelMcDowell
No, but I reported it to Lena Sawyer from REPLIT. I am testing under Teams for Education. The problem is with programs with multiple, separate lines of input. Seems that the tests just time out (and thereby fail).

Profile icon
MichaelMcDowell

@robertrodini1
I've asked about the same thing a couple weeks ago here (https://community.replit.com/t/multiple-input-output-in-node-js/167). I'm also using Teams for Education.

Currently I use functions with inputs to run my unit tests, and have students enter values on the code side for variables that are sent to the the function. It would be ideal to allow the prompt() twice for the student instead. Currently it times out as you have said.

If you drum up a work around at any point, I'd love to hear about it. I'm still experimenting when I find time each week with a solution. I'm just not that skilled at Jest at this time.

Profile icon
robertrodini1

@MichaelMcDowell
REPLIT has employee Lena Sawyer and I have her email. I report it to her and she forwarded to the engineering team.
If I hear back I will let you know.