Skip to content

Instantly share code, notes, and snippets.

@ZhaoRd
Forked from skalinets/AutoNSubstituteDemo.cs
Created September 29, 2018 09:51
Show Gist options
  • Select an option

  • Save ZhaoRd/fce843e1ad3202b051132b69dc7a71ac to your computer and use it in GitHub Desktop.

Select an option

Save ZhaoRd/fce843e1ad3202b051132b69dc7a71ac to your computer and use it in GitHub Desktop.
AutoFixture + NSubstitute Demo
using NSubstitute;
using Ploeh.AutoFixture;
using Ploeh.AutoFixture.AutoNSubstitute;
using Ploeh.AutoFixture.Xunit;
using Xunit.Extensions;
namespace AutofixtureDemo
{
public class AutoNSubstituteDemo
{
[Theory, AutoNSubstituteData]
public void should_validate_password_and_record(
User user,
[Frozen] IValidator validator,
[Frozen] IAuditLogger auditLogger,
Controller controller)
{
// arrange
validator.IsValidPassword(user.Password).Returns(true);
// act
controller.RegisterUser(user);
// assert
auditLogger.Received().Log("password is ok, user: " + user.Name);
}
}
public class AutoNSubstituteDataAttribute : AutoDataAttribute
{
public AutoNSubstituteDataAttribute()
: base(new Fixture()
.Customize(new AutoNSubstituteCustomization()))
{
}
}
public class User
{
public string Name { get; set; }
public string Password { get; set; }
}
public interface IAuditLogger
{
void Log(string message);
}
public class Controller
{
private readonly IValidator validator;
private readonly IAuditLogger auditLogger;
public Controller(IValidator validator, IAuditLogger auditLogger)
{
this.validator = validator;
this.auditLogger = auditLogger;
}
public void RegisterUser(User user)
{
if (validator.IsValidPassword(user.Password))
{
auditLogger.Log("password is ok, user: " + user.Name);
}
}
}
public interface IValidator
{
bool IsValidPassword(string password);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment