gpt4 book ai didi

c# - 使用起订量,System.InvalidCastException : Unable to cast object of type 'CaSTLe.Proxies.ObjectProxy' to type

转载 作者:行者123 更新时间:2023-11-30 19:36:03 25 4
gpt4 key购买 nike

有人可以帮我解决这个错误消息吗?我不明白为什么类型转换不起作用:

Message: System.InvalidCastException : Unable to cast object of type 'Castle.Proxies.ObjectProxy' to type 'Automation.Pages.ToolbarElements.ElementsWithActiveState.ActiveStateElements'.

这是我的测试:

[TestFixture]
[Category("unit")]
class ActiveStateElementBehaviorTests
{
[Test]
public void GetCurrentElementState_StateIsActive_ReturnActive()
{
var moqElement = new Mock<IActiveState>();
moqElement.Setup(x => x.IsElementInActiveState()).Returns(() => true);

var behavior = new ActiveStateElementBehavior(moqElement.Object);
behavior.GetCurrentElementState().Should().BeEquivalentTo(ElementState.Active);
}
}

这是我的代码:

public class ActiveStateElementBehavior : IElementStateBehavior
{
public ActiveStateElementBehavior(IActiveState toolbarElement)
{
Element = (ActiveStateElements)toolbarElement;
}

public ENAEPToolbarElement Element { get; }

public ElementState GetCurrentElementState()
{
var element = (ActiveStateElements) Element;
return element.IsElementInActiveState() ? ElementState.Active :
element.IsButtonInEnabledState() ? ElementState.Default :
ElementState.Disabled;
}
}

public interface IActiveState
{
bool IsElementInActiveState();
}

最佳答案

你的模拟是 IActiveState , 不是 ActiveStateElements .

当您调用 new Mock<IActiveState>() 时它正在动态创建一些实现接口(interface) IActiveState 的新类型.此新类型不可转换为 ActiveStateElements ,这意味着转换将在构造函数中失败。

您可以像 var moqElement = new Mock<ActiveStateElements>() 这样创建模拟,但我想那是行不通的。 ActiveStateElements 上的方法可能不是 virtual ,因此您将无法设置任何方法。

真正的问题是 ActiveStateElementBehavior对消费者说“我需要实现 IActiveState 的东西”。然后在内部它需要一个 ActiveStateElements 的实例.

您应该在 IActiveState 上定义您需要的任何其他方法, 和 ActiveStateElementBehavior不应该对 ActiveStateElements 进行任何转换或引用.它应该只知道接口(interface) IActiveState

关于c# - 使用起订量,System.InvalidCastException : Unable to cast object of type 'CaSTLe.Proxies.ObjectProxy' to type,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48773168/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com