我在弄清楚为什么我无法测试我的driver
变量时遇到了麻烦,当我调用null
时,它会不断返回Start()
。我基本上想访问该变量并对其进行测试。
我当前无法通过的测试:
[TestMethod]
public void Start_Default_IsChrome2()
{
var dummyManager = new Mock<IRemoteDriver>();
var mockDriver = new Mock<IWebDriver>();
dummyManager.Setup(x => x.CreateRemoteWebDriver(new ChromeOptions()))
.Returns(It.IsAny<RemoteWebDriver>());
var session = new SauceSession(dummyManager.Object);
//The Start() keeps returning a null object
var driver = session.Start();
var capabilities = driver.Capabilities;
capabilities.getcapability("browserName").Should().Be("chrome");
}
要嘲笑的依赖性
public interface IRemoteDriver
{
IWebDriver CreateRemoteWebDriver(ChromeOptions chromeOptions);
}
被测对象
public SauceSession(IRemoteDriver driverManager)
{
remoteDriverManager = driverManager;
}
public RemoteWebDriver Start()
{
sauceusername = Environment.GetEnvironmentVariable("SAUCE_username",EnvironmentVariabletarget.User);
sauceaccessKey = Environment.GetEnvironmentVariable("SAUCE_accESS_KEY",EnvironmentVariabletarget.User);
sauceOptions = new Dictionary<string,object>
{
["username"] = sauceusername,["accessKey"] = sauceaccessKey
};
var chromeOptions = new ChromeOptions
{
BrowserVersion = "latest",PlatformName = "Windows 10",UseSpecCompliantProtocol = true
};
chromeOptions.AddAdditionalCapability("sauce:options",sauceOptions,true);
//This keeps returning a null
return (RemoteWebDriver)remoteDriverManager.CreateRemoteWebDriver(chromeOptions);
}
如果有帮助,则具体实现可以正常工作,并且该测试如下所示:
[TestMethod]
public void Start_Default_IsChrome()
{
var session = new SauceSession();
var driver = session.Start();
var capabilities = ((RemoteWebDriver)driver).Capabilities;
capabilities.getcapability("browserName").Should().Be("chrome");
}
除我在此处设置的对象外,其他所有内容均相同:
public SauceSession()
{
remoteDriverManager = new ConcreteRemoteWebDriver();
}
class ConcreteRemoteWebDriver : IRemoteDriver
{
public IWebDriver CreateRemoteWebDriver(ChromeOptions chromeOptions)
{
return new RemoteWebDriver(new Uri("https://ondemand.saucelabs.com/wd/hub"),chromeOptions.ToCapabilities(),TimeSpan.FromSeconds(600));
}
}
这是RemoteWebDriver:
public class RemoteWebDriver : IWebDriver,ISearchContext,IDisposable,IJavaScriptExecutor,IFindsById,IFindsByClassname,IFindsByLinkText,IFindsByName,IFindsByTagName,IFindsByXPath,IFindsByPartialLinkText,IFindsByCssSelector,ITakesScreenshot,IHasInputDevices,IHasCapabilities,IHasWebStorage,IHasLocationContext,IHasApplicationCache,IAllowsFileDetection,IHasSessionId,IactionExecutor