I want to test a function in a class but it relies on the object which isn't called

So I have a class which calls another class then the method in the lower class. I have now moved onto unit testing this functions. In the lower class the method has a series of if statements which depends on the object. However the object isn't used when calling the function.
It would be very complicated to instantiate the upper class prior to instantiating the lower class then calling the method. So that the object is in use. Can I just call the method using the object as an input?

3 Comments

In the lower class the method has a series of if statements which depends on the object. However the object isn't used when calling the function.
Unless the method is a Static method, you must specify an instance of its class (which could be an instance of a subclass that inherits the method) when you call it. So your last sentence in the section I quoted doesn't make sense (again, unless the method is Static.)
If the method is Static, you can call it using the name of the class rather than an instance of the class.
BTW, the method needing to know about other classes smells like "unexploited encapsulation". Every time someone adds a new class that could be passed into this method, the method needs to be modified. That's Not a Good Thing.
Sorry I am not used to class and I did not make the class so I am sorry if I didn't explain it well
Bascially the tests are failing, when something somewhere else changes. I believe this value is changed within the object at a higher level and passed down. So when I test the method in the lower class, the object isn't chnaged as its done in isolation, so the if statement is never triggered, so the result is returned wrong and the test fails.
When calling the method after instantiating the class in the test its " Output = className(Input)" but it never calls the now changed object.
When running the entire script I can save the changed object. But since its never called as shown above, how can I use it?
This call does not have static methods but in another class there is.
Does this make more sense?
I think you should probably show a small concrete example of what you're describing. I'm not certain I understand what your implementation is doing from this prose description. In this case, a small chunk of code may be worth at least a few hundred words.

Sign in to comment.

Answers (0)

Categories

Find more on Software Development in Help Center and File Exchange

Asked:

on 1 Feb 2024

Commented:

on 1 Feb 2024

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!