2

次のテストを実行すると、すべてのアサーションが失敗します。実際の実装にはオブジェクトへの呼び出しがあるため、失敗する理由を理解できません。

これは既知のバグですか? 他のいくつかのテストは成功するためです。

[Subject("Pst Cleanup")]
public class When_running_Pst_CleanUp
{
    Establish context = () =>
    {
        _folders = A.Fake<IOutlookFolderParameters>();
        _processor = A.Fake<IOutlookPstCleaner>();
    };

    Because of = () => _processor.Cleanup(_folders);

    It should_cleanup_the_mail_folder = () => A.CallTo(() => _folders.EmailFolder).MustHaveHappened();
    It should_cleanup_tasks_folder = () => A.CallTo(() => _folders.TaskFolder).MustHaveHappened();
    It should_cleanup_appointments_folder = () => A.CallTo(() => _folders.AppointmentFolder).MustHaveHappened();

    private static IOutlookPstCleaner _processor;
    private static IOutlookFolderParameters _folders;
}

次の呼び出しでアサーションが失敗しました: Outlook.Contracts.IOutlookFolderParameters.get_NotificationsFolder() 少なくとも 1 回は見つかるはずですが、偽のオブジェクトへの呼び出しは行われませんでした。

FakeItEasy.Core.FakeAsserter.AssertWasCalled(Func 2 callPredicate, String callDescription, Func2 repeatPredicate, String repeatDescription) で FakeItEasy.Configuration.RuleBuilder.MustHaveHappened(Repeated repeatConstraint) で UnitTests.When_running_Pst_CleanUp.<.ctor>b__2() で When_running_Pst_CleanUp.cs: 19 行目

4

1 に答える 1

3

これは FakeItEasy の完全に正しい動作です。IOutlookPstCleanerテストを成功させるには、実際の実装を使用する必要があります。常に正しいものを偽造し、誤って SUT を偽造しないようにしてください。

呼び出されたばかりのプロパティのテストでは、価値のあるものはまったくテストしません。この実装を書くだけIOutlookPstCleanerで、テストは成功します。

public class Cleaner : IOutlookPstCleaner 
{
    public void Cleanup(IOutlookFolderParameters folders)
    {
        var email = folders.EmailFolder;
        var task = folders.TaskFolder;
        var appointment = folders.AppointmentFolder;
    }
}

の実装を投稿IOutlookPstCleanerしていただければ、テストに適したものを見つけるお手伝いをさせていただきます。

于 2013-03-25T06:59:43.867 に答える