You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@thrift.apache.org by "Eric Bléher (Jira)" <ji...@apache.org> on 2021/10/28 16:53:00 UTC

[jira] [Commented] (THRIFT-5173) Thrift C# (netstd) code generator: make method virtual for mocking

    [ https://issues.apache.org/jira/browse/THRIFT-5173?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17435559#comment-17435559 ] 

Eric Bléher commented on THRIFT-5173:
-------------------------------------

15 months later, I see this is still open. I could be however closed since a simple workaround is possible: instead of using the client generated, create a wrapper class that inherits from the generated client and make the method virtuals in this wrapper.
Thus, this wrapper can be easily mocked for unit tests.

Example:

 
{code:java}
// wrapper to only get virtual methods
public class ThriftPushClientWrapper : generatedPush.Client 
{ 
     public ThriftPushClientWrapper(TProtocol protocol) : base(protocol) { }
     public virtual Task<PushEventResult> PushEvent(PushEventData data, CancellationToken cancellationToken)     
         => base.pushEvent(data, cancellationToken);
}
{code}

> Thrift C# (netstd) code generator: make method virtual for mocking
> ------------------------------------------------------------------
>
>                 Key: THRIFT-5173
>                 URL: https://issues.apache.org/jira/browse/THRIFT-5173
>             Project: Thrift
>          Issue Type: Improvement
>          Components: netstd - Compiler
>    Affects Versions: 0.13.0
>            Reporter: Eric Bléher
>            Priority: Major
>
> Thrift compiler generates C# clients where methods cannot be mocked because they are not defined as virtual.
> Adding virtual allow the usage of Moq and thus I can have proper unit tests of my own class implementations consuming theses generated clients.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)