C# 增加最小起订量会给我的测试带来额外的好处吗

C# 增加最小起订量会给我的测试带来额外的好处吗,c#,nunit,moq,C#,Nunit,Moq,我知道使用moq很好,我有一个数据库或某种我想模拟的列表,但它对这样的东西有用吗 我的测试通过了,但如果使用moq这样的工具可以让它们更容易阅读或更易于维护,我完全赞成 [TestFixture] public class UnitTest1 { [Test] public void encrypted_token_should_match() { var settings = new Encryptor2000.EncryptionSettings(

我知道使用moq很好,我有一个数据库或某种我想模拟的列表,但它对这样的东西有用吗

我的测试通过了,但如果使用moq这样的工具可以让它们更容易阅读或更易于维护,我完全赞成

  [TestFixture]
public class UnitTest1
{
    [Test]
    public void encrypted_token_should_match()
    {
        var settings = new Encryptor2000.EncryptionSettings()
        {
            Secret = "1234"
        };

        var token = new Dictionary<string, object>()
        {
            {"1",1}
        };

        var hardcodedTokenValue = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyIxIjoxfQ.wqrYm4ADb_P9qR2uCQh-VU6xX1KG6FwoCX9N2J0QpqCPPYm-4vchy7xmMtdzQ1xtBfryTP4ztJHohyb50CmjYA";

        var actualToken = new Encryptor2000(settings).Encrypt(token);
        Assert.AreEqual(hardcodedTokenValue, actualToken);





    }

    [Test]
    public void decrypted_token_should_match()
    {
        var settings = new Encryptor2000.EncryptionSettings()
        {
            Secret = "1234"
        };

        var token = new Dictionary<string, object>()
        {
            {"1",1}
        };

        var hardcodedTokenValue = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyIxIjoxfQ.wqrYm4ADb_P9qR2uCQh-VU6xX1KG6FwoCX9N2J0QpqCPPYm-4vchy7xmMtdzQ1xtBfryTP4ztJHohyb50CmjYA";

        var actualToken = new Encryptor2000(settings).Decrypt(hardcodedTokenValue);
        Assert.AreEqual(token, actualToken);

    }
}


public class Encryptor2000 : IEncryptor<IDictionary<string, object>>
{
    private readonly EncryptionSettings _settings;

    public class EncryptionSettings
    {
        public string Secret { get; set; }

    }

    public Encryptor2000(EncryptionSettings settings)
    {
        _settings = settings;
    }

    public string Encrypt(IDictionary<string, object> token)
    {
        return JsonWebToken.Encode(token, _settings.Secret, JwtHashAlgorithm.HS512);
    }

    public IDictionary<string, object> Decrypt(string token)
    {
        return JsonWebToken.DecodeToObject(token, _settings.Secret, true) as IDictionary<string, object>;
    }

}

public interface IEncryptor<T>
{
    string Encrypt(T token);

}
Encryptor2000不依赖于任何服务类,因此您不会真正有任何可模仿的内容。EncryptionSettings和Dictionary仅仅是数据结构,构建起来要比模拟起来容易。所以在这一点上,你会发现使用最小起订量没有任何价值


但是,假设您有另一个类可能使用您的加密机或任何其他加密机,并且您希望独立于Encryptor2000对该类进行单元测试。在这种情况下,Moq将使您能够轻松地确保类使用适当的值调用Encrypt方法,并查看当Encrypt方法返回各种值时会发生什么。当您将服务接口注入到类中时,Moq就派上了用场。

谢谢@StriplingWarrior您的回答澄清了问题