C# 使用Rhino模拟来单元测试删除功能

C# 使用Rhino模拟来单元测试删除功能,c#,unit-testing,rhino-mocks,C#,Unit Testing,Rhino Mocks,我正在使用Rhino mocking进行单元测试,以测试删除传输的方法。但是我不确定如何测试它。下面是我所拥有的,但它失败了Assert.AreEqual失败了,因为返回的结果是异常对象引用未设置为对象的实例 /// <summary> /// Test Case: to /// </summary> [TestMethod] public void Should_DeleteTransload() { //ex

我正在使用Rhino mocking进行单元测试,以测试删除传输的方法。但是我不确定如何测试它。下面是我所拥有的,但它失败了Assert.AreEqual失败了,因为返回的结果是异常对象引用未设置为对象的实例

    /// <summary>
   /// Test Case: to
   /// </summary>
    [TestMethod]
    public void Should_DeleteTransload()
    {
        //expect
        mockTransloaderRepository.Expect(r => r.GetOneAsync(x => x.Id == ostTransloader5.Id)).IgnoreArguments().Return(Task.FromResult(ostTransloader5));
        mockOstTransloaderService = MockRepository.GenerateMock<OstTransloaderService>(mockTransloaderRepository, mockAuditContext);
        mockTransloaderRepository.Expect(r => r.AddAsync(ostTransloader5)).IgnoreArguments().Return(Task.Run(() => true));
        mockTransloaderRepository.Expect(r => r.AddAsync(ostTransloader4)).IgnoreArguments().Return(Task.Run(() => true));
        List<OstTransloader> ostTransloaders = new List<OstTransloader>() { ostTransloader4 };

        mockTransloaderRepository.Expect(t => t.DeleteAsync(ostTransloader5)).IgnoreArguments().Return(Task.Run(() => true));
        ////act
        var result = mockOstTransloaderService.PurgeTransloadShipmentMaterial(transloadIds);
        //// assert
        Assert.IsNotNull(result);
        Assert.AreEqual(ostTransloaders, result);           

    }

如何测试是否删除了正确的翻译?

两个免责声明:1我在几年前从Rhino Mocks迁移到Moq,因此这是来自记忆。2我看不到您的代码正在测试中,所以我不得不假设您正在正确设置您的模型,以匹配代码的工作方式

您需要检查是否对依赖项进行了正确的调用。这是使用Verify完成的。将其添加到断言部分

您可以通过将测试中的代码更改为调用DeleteAsyncnull来证明这是否是正确的,这会导致测试失败,当您将其放回测试时,测试应该通过

顺便说一句,在Moq中,我还建议使用Times.Once参数,以确保只调用了一次,我假设Rhino Mocks也有类似的功能,但很抱歉,我不知道这是什么

mockTransloaderRepository.Verify(t => t.DeleteAsync(ostTransloader5));