Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 8287405
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 8, 20262026-06-08T12:01:50+00:00 2026-06-08T12:01:50+00:00

I have a MethodA which calls MethodB in a separate class (one which follows

  • 0

I have a MethodA which calls MethodB in a separate class (one which follows an interface).

MethodB had a StreamReader in it, so I refactored the call to new StreamReader() into a new MethodC (in the same class as MethodB).

In order to test MethodA, i need to mock MethodB, but I also need to be able to test MethodB by mocking MethodC.

(I guess it’s become clear I’m a little lost.)

namespace JimBob.CsvImporter.Entity
{

public interface IIOManager
{
    TextReader ReturnReader(string path);

    int GetNumberOfColumnsInFile(string filePath, List<string> errorMessageList);
}


public class IOManager : IIOManager
{
    //MethodC
    public TextReader ReturnReader(string filePath)
    {
        return new StreamReader(filePath);
    }

    //MethodB
    public int GetNumberOfColumnsInFile(string filePath, List<String> errorMessageList)
    {
        int numberOfColumns = 0;
        string lineElements = null;

        try
        {
            using (StreamReader columnReader = (StreamReader)ReturnReader(filePath))
            {
                lineElements = columnReader.ReadLine();
                string[] columns = lineElements.Split(',');
                numberOfColumns = columns.Length;
            }
            return numberOfColumns;
        }
        catch (Exception ex)
        {
            errorMessageList.Add(ex.Message);
            return -1;
        }
    }
}


public class EntityVerification
{

    private IIOManager _iomgr;

    public EntityVerification(IIOManager ioManager)
    {
        this._iomgr = ioManager;
    }

    //MethodA
    public void ValidateNumberOfColumns(
        string filePath, int userSpecifiedColumnCount, 
         List<String> errorMessageList
   )
    {
        int numberOfColumnsInFile = 
            _iomgr.GetNumberOfColumnsInFile(filePath, errorMessageList);

        if (userSpecifiedColumnCount != numberOfColumnsInFile) errorMessageList.Add(
            "Number of columns specified does not match number present in file.");
    }

At present my test is as follows:

    [Test]
    public void GetNumberOfColumnsInFile_ReturnsNumberOfColumns_Returns6()
    {
        Mock<IIOManager> mock = new Mock<IIOManager>();
        mock.Setup(x => x.ReturnReader(It.IsAny<string>())).Returns(
           new StringReader("the,big,fat,dog,ate,cats"));
        EntityVerification testObject = new EntityVerification(mock.Object);
        List<String> errorMessageList = new List<string>();
        int i = testObject.GetNumberOfColumnsInFile("blabla.txt", errorMessageList);
        Assert.AreEqual(i , 6);
    }

But this was for when it was part of the Entity Verification Class.

Am i missing something? Any assistance would be appreciated!

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-08T12:01:52+00:00Added an answer on June 8, 2026 at 12:01 pm

    In the test for MethodA, Mock MethodB. In a separate test, Mock MethodC to test MethodB.

    The test for MethodA is independent from the test for MethodB, so don’t over think this too much.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have a method which calls for a classmethod of another class def get_interface_params_by_mac(self,
I have this code: s(x => x.Open()); s is a method which calls one
I have a class (RInterfaceHL) that calls another class (JRIEngine) which provides native methods
i have one setinterval method which call php script every 3 sec to check
I have a class that has two method in it, one calls a class
I have a method which calls a method on an integer: def print_time(time =
I have a method invoking bean which calls a method to perform some sort
I want my classes X and Y to have a method f(x) which calls
I have c#.net code which calls a method from another external/referenced .net assembly. This
From my website, I have a button which calls a method and then generates

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.