razor-componentsbunit

ArgumentNullException when invoking RenderComponent with Action


I am trying to test a custom Razor component with an EventBack parameter:

@code {
  [Parameter]
  public EventCallback OnClick { get; set; }
}

I am using bUnit with xUnit to try to test EventCallback. Here's my test method:

public void TestOnClickEvent()
{
  void TestOnClick()
  {
    Assert.True(true);
  }

  IRenderedComponent<CSInput> component = 
    RenderComponent<CSInput>(
      builder => builder.Add(
        instanceOfCSInput => instanceOfCSInput.OnClick,
        TestOnClick));

  component.Find("input").Click();
}

When I tried to run the test, I get an ArgumentNullException from RenderComponent(), but I have no idea what could it be since everything is all in lambda.


Solution

  • Apparently, the location function is the issue. I replace the call to the local function with another lambda and it works!

    IRenderedComponent<CSInput> component = 
        RenderComponent<CSInput>(
          builder => builder.Add(
            instanceOfCSInput => instanceOfCSInput.OnClick,
            () => Assert.True(true)));