如何解决将接口映射到具体类时如何指定 Autofixture 的顺序?
!pip install kora -q
from kora.selenium import wd
import time
from bs4 import BeautifulSoup as BS
def get_results(search_string):
url = 'https://www.google.com/'
wd.get(url)
time.sleep(3)
subject_Box = wd.find_element_by_css_selector('input[name=q]')
subject_Box.send_keys('search_string')
subject_Box.submit()
time.sleep(3)
html2 = wd.page_source
print(html2)
get_results('dog')
我尝试将我的具体类映射到接口,但正如在代码中所见,为了设置 interface ILamp
{
bool IsWorking { get; set; }
string LampModel { get; set; }
}
public string LampModel
{
get => _lampModel;
set { _lampModel = IsWorking ? value : throw new Exception("its not in working."); }
}
class TestingClass
{
public ILamp lamp;
}
[Test]
public void Simpletest()
{
var Fixture = new Fixture();
Fixture.Customizations.Add(new TypeRelay(typeof(ILamp),typeof(Lamp)));
var fake = Fixture.Build<TestingClass>().Do(s => s.lamp.IsWorking = true).Create();
}
,您首先需要将 LampModel
设置为 true。
我尝试在 IsWorking
中这样做,但它给了我 - .Do()
我认为这是由于 System.NullReferenceException : Object reference not set to an instance of an object
在自定义之前运行或类似的东西。我该如何解决?
解决方法
.Do()
自定义确实在自定义类型实例创建后立即运行,并且无法控制。
您可能应该尝试的是使用 Lamp
属性的预期值自定义/构建 IsWorking
实例,然后使用它构建 TestingClass
实例。>
var fixture = new Fixture();
fixture.Customizations.Add(new TypeRelay(typeof(ILamp),typeof(Lamp)));
fixture.Customize<Lamp>(
c => c.With(x => x.IsWorking,true)
.With(x => x.LampModel));
var actual = fixture.Create<TestingClass>();
您可以查看here完整示例。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。