我正在尝试为 ASP.NET 创建一个单元测试,该测试具有以下构造函数定义(在运行实际应用程序时填充 Ninject):
public OrderController(IViewModelFactory modelFactory, INewsRepository repository, ILoggedUserHelper loggedUserHelper,
IDelegateHelper delegateHelper, ICustomerContextWrapper customerContext) {
this.factory = modelFactory;
this.loggedUserHelper = loggedUserHelper;
this.delegateHelper = delegateHelper;
this.customerContext = customerContext;
}
Run Code Online (Sandbox Code Playgroud)
我想测试OrderController类中的方法,但为了隔离它,我必须模拟所有这些依赖项,这变得非常荒谬(可能还必须模拟子依赖项)。
在这种情况下,对此类进行单元测试的最佳实践是什么?
我试图通过以下方式在AutoFixture中使用AutoData功能进行NUnit测试:
[Test]
[AutoData]
public void PharmaciesAndDelegatesShouldBeLinkedEachOther(string s) {
...
}
Run Code Online (Sandbox Code Playgroud)
但是,我在运行测试时收到以下错误.只要我没有传递该参数,测试中的其他所有内容都能正常工作:
结果消息:未提供任何参数.
我究竟做错了什么?
我有以下简短的代码,只是计算文本的单词:
[<EntryPoint>]
let main argv =
let text = File.ReadAllText("gettysburg.txt").ToLower()
Regex.Split(text, "\W+")
|> Seq.groupBy id
|> Seq.map (fun (k, grp) -> (k, grp |> Seq.length))
|> Seq.sortByDescending (fun (w, ln) -> (ln, w))
|> Seq.iter (fun (k, ln) -> printfn "%s\t%i" k ln)
Run Code Online (Sandbox Code Playgroud)
sort函数首先按出现次数排序,然后按字母顺序排序,均为降序排序.我需要按出现次数递减,然后按字母顺序递增.
使用OrderByDescending和ThenBy, LINQ非常简单.如何在不重复使用LINQ的情况下在F#中实现相同的结果?
谢谢.
我正在将应用程序从C ++转换为.NET / C#。但是,我在如何用C#表达C ++函子上苦苦挣扎。
将以下表达式转换为C#的最佳方法是什么?
struct AircraftMover
{
AircraftMover(float vx, float vy)
: velocity(vx, vy)
{
}
void operator() (Aircraft& aircraft, sf::Time) const
{
aircraft.accelerate(velocity);
}
sf::Vector2f velocity;
};
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Asp.Net Web Api创建一个通过Post上传文件的Web服务.这些分别是Client和Web Api的实现:
客户:
using (var client = new HttpClient()) {
client.BaseAddress = new Uri("https://127.0.0.1:44444/");
using (var content =
new MultipartFormDataContent("Upload----" + DateTime.Now.ToString(CultureInfo.InvariantCulture))) {
content.Add(new ByteArrayContent(File.ReadAllBytes(filepath)));
content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
var response = await client.PostAsync("api/Synchronization", content);
if (response.IsSuccessStatusCode)
eventLog1.WriteEntry("Synchronization has been successful", EventLogEntryType.Information);
else
eventLog1.WriteEntry(response.StatusCode + ":" + response.ReasonPhrase, EventLogEntryType.Error);
}
}
Run Code Online (Sandbox Code Playgroud)
服务器:
public class SynchronizationController : ApiController {
public HttpResponseMessage SynchronizeCsv() {
var task = this.Request.Content.ReadAsStreamAsync();
task.Wait();
Stream requestStream = task.Result;
try {
Stream fileStream = File.Create(HttpContext.Current.Server.MapPath(path));
requestStream.CopyTo(fileStream); …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 Kafka 设计一个事件源系统。假设我们有一个非常简单的事件源应用程序,由四个聚合根组成:用户、类别、产品和购买。
遵循confluence的一些指导,我创建了 4 个主题(为简单起见,我们假设每个主题 1 个分区),每个聚合一个:
我的投影是 PostgresSQL 投影,它从 Kafka 读取事件,然后将每个事件转换为 SQL 查询(根据事件类型插入、更新或删除)。
问题是数据库模型大约是这样的:
鉴于主题之间的事件顺序无法保证,如果我尝试将产品添加到没有其类别的数据库中,我很可能会收到来自数据库的foreignkey错误。同样,如果我尝试在用户或产品尚未处理的情况下添加购买,我很可能会收到另一个外键错误。
我必须使用哪些分区选项来解决读取模型中的外键问题,并允许我的系统随着更多实体和更多事件而增长,而不必依赖将所有内容放入单个主题来避免外键问题?
我想到的一件事是,虽然我可以独立处理用户和产品而不会发生冲突,但我仍然需要对购买做一些事情(以某种方式延迟该主题的事件处理,直到确保用户和产品存在于数据库)。
c# ×3
.net ×2
apache-kafka ×1
autofixture ×1
c++ ×1
f# ×1
functor ×1
httpclient ×1
mocking ×1
moq ×1
nunit ×1
sorting ×1
unit-testing ×1