NSubstitute中Received()的NullReferenceException

时间:2017-01-09 12:58:20

标签: c# nsubstitute

我想用NSubsitute验证以下代码:

public PkiBodyBuilder AddExtension(
            DerObjectIdentifier oid,
            bool critical,
            Asn1Encodable value)
{
     this.extensionsGenerator.AddExtension(oid, critical, value);
     return this;
}

我做了

[TestMethod]
        public void AddExtension_KeyUsage_OK()
        {
            // arrange
            X509ExtensionsGenerator  mockExtensionsGenerator = Substitute.For<X509ExtensionsGenerator>();
            builderUnderTest.SetExtensionsGenerator(mockExtensionsGenerator );
            KeyUsage keyUsage = new KeyUsage(KeyUsage.KeyCertSign | KeyUsage.CrlSign);
            DerObjectIdentifier oid = X509Extensions.KeyUsage;

            // act
            builderUnderTest.AddExtension(oid, true, keyUsage.ToAsn1Object());

            // assert
            mockExtensionsGenerator.Received().AddExtension(Arg.Is<DerObjectIdentifier>(doi => oid.Equals(doi)),
                                                  Arg.Is<bool>(crit => crit),
                                                  Arg.Is<Asn1Encodable>(a1e => keyUsage.ToAsn1Object().Equals(a1e)));
        }

验证AddExtensions() - 已调用内部ExteensionsGenerator的方法。 但是我在assert-Line中收到以下错误:

Testname:   AddExtension_KeyUsage_OK
Test FullName:  Telenot.HiXServer.TMP.PKI.AddExtension.AddExtension_KeyUsage_OK
Testquelle: D:\Projekte\hixserver\Telenot.HiXServer.TMP.Unittests\PKI\PkiBodyBuilder\AddExtension.cs Zeile 39
Testergebnis:   Fehlgeschlagene
Testdauer:  0:00:00,0376248
Ergebnis StackTrace:    
bei Org.BouncyCastle.Asn1.X509.X509ExtensionsGenerator.AddExtension(DerObjectIdentifier oid, Boolean critical, Asn1Encodable extValue)
   bei Telenot.HiXServer.TMP.PKI.AddExtension.AddExtension_KeyUsage_OK() in D:\Projekte\hixserver\Telenot.HiXServer.TMP.Unittests\PKI\PkiBodyBuilder\AddExtension.cs:Zeile 52.
Ergebnis Meldung:   
Die Telenot.HiXServer.TMP.PKI.AddExtension.AddExtension_KeyUsage_OK-Testmethode hat eine Ausnahme ausgelöst: 
System.ArgumentException: error encoding value: System.NullReferenceException: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.
   bei Org.BouncyCastle.Asn1.X509.X509ExtensionsGenerator.AddExtension(DerObjectIdentifier oid, Boolean critical, Asn1Encodable extValue)

我无法弄清楚为什么会遇到此异常。有人可以帮忙吗?调试显示mockExtensionsGenerator绝对不是null。此外,oid和keyUsage也不为空。

修改

我很清楚this SO question。然而,它并没有真正回答我的问题,因为我通过调试器检查了该行中没有任何值为空。我认为这与我对NSubstitute的使用有关,但由于我对NSubstitute很新,我看不出我可能做错了什么。

0 个答案:

没有答案