Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何解释此(rhino)模拟单元测试失败消息_C#_Unit Testing_Rhino Mocks - Fatal编程技术网

C# 如何解释此(rhino)模拟单元测试失败消息

C# 如何解释此(rhino)模拟单元测试失败消息,c#,unit-testing,rhino-mocks,C#,Unit Testing,Rhino Mocks,我试图测试加载UI矩阵的方法是否正确加载。除非我告诉模拟框架忽略传递的参数,否则测试将失败,并给出以下消息: Rhino.Mocks.Exceptions.ExpectationViolationException: ITIMESheetMatrix Widget.Load (Smack.ConstructionAdmin.Domain.TransferObjects.TimeSheetDtoAssembler +d___1);预期为1,实际为0 有趣的是,消息以某种方式接收到对另一个对象的调用

我试图测试加载UI矩阵的方法是否正确加载。除非我告诉模拟框架忽略传递的参数,否则测试将失败,并给出以下消息:

Rhino.Mocks.Exceptions.ExpectationViolationException: ITIMESheetMatrix Widget.Load (Smack.ConstructionAdmin.Domain.TransferObjects.TimeSheetDtoAssembler +d___1);预期为1,实际为0

有趣的是,消息以某种方式接收到对另一个对象的调用,该对象从域模型组装DTO-我不明白

以下是Sut的接口/方法:

public interface ITimeSheetMatrixWidget : IMatrixWidget {
    .....
    void Load(IEnumerable<DynamicDisplayDto>activities);
    .....
公共接口ITIMESheetMatrix小部件:iMatrix小部件{
.....
空隙荷载(IEnumerableactivities);
.....
}

下面是测试:

[Test]
public void SettingTheWidget_TriggersLoad_NonProjectActivities() {
        var f = _getFacade();
        // create test activities
        TestDataFactory.SetupTestActivities(f);
        Assert.That(f.NonProjectDtos.Count(), Is.GreaterThan(0));

        // create the presenter
        var filterService = MockRepository.GenerateStub<IProjectFilterService>();
        var view = MockRepository.GenerateStub<ITimeSheetView>();
        var timeSheetPresenter = new TimeSheetPresenter(f, filterService, view);

        // inject the mocked widget & trigger the Load
        var widget = MockRepository.GenerateMock<ITimeSheetMatrixWidget>();
        timeSheetPresenter.ActivityMatrix = widget;

        widget.AssertWasCalled(x => x.Load(f.NonProjectDtos), 
            mo =>mo.IgnoreArguments()); <-- ok, but not useful
        //widget.AssertWasCalled(x => x.Load(f.NonProjectDtos)); <-- generates the Exception
    }
[测试]
public void SettingTheWidget_TriggersLoad_NonProjectActivities(){
var f=_getFacade();
//创建测试活动
TestDataFactory.SetupTestActivities(f);
Assert.That(f.NonProjectDtos.Count(),大于(0));
//创建演示者
var filterService=MockRepository.GenerateStub();
var view=MockRepository.GenerateStub();
var timeSheetPresenter=新的timeSheetPresenter(f,filterService,view);
//注入模拟小部件并触发加载
var widget=MockRepository.GenerateMock();
timeSheetPresenter.ActivityMatrix=小部件;
调用widget.assertwas(x=>x.Load(f.NonProjectDtos),

mo=>mo.IgnoreArguments());x.Load(f.NonProjectDtos));我想它需要一个调用,但没有得到任何调用。

Rhino在陈述这样一个事实:按照测试的安排,我没有得到我告诉它的调用。下面的测试是测试IEnumerable参数的有效方法:

[Test]
public void ProjectMatrix_Injection_IsLoaded()
    {
        _projectMatrix = MockRepository.GenerateMock<ITimeSheetMatrixWidget>();

        var dtos = _facade.ProjectDtos;
        _projectMatrix.Expect(x => x.Load(Arg<IEnumerable<DynamicDisplayDto>>.List.Equal(dtos))).Return(dtos.Count());

        new MatrixEntryService(_facade, _projectMatrix, _nonProjectMatrix, _totalMatrix);

        _projectMatrix.VerifyAllExpectations();
    }

方法的参数对我来说是个谜(TransferObjects.TimesheetToAssembler+d__1),方法调用中Rhino不期望的部分。d_1是什么意思?
Arg<IEnumerable<DynamicDisplayDto>>
List.Equal(dtos)