Как проверить, было ли определенное событие с конкретными ARGS, было одним из многих событий?C#

Место общения программистов C#
Ответить
Anonymous
 Как проверить, было ли определенное событие с конкретными ARGS, было одним из многих событий?

Сообщение Anonymous »

У меня есть объект, который реализует inotifypropertychanged . Как и следовало ожидать, есть свойства, которые, если вы измените напрямую, он уведомит об изменении. Тем не менее, существуют другие свойства, которые могут измениться, а также побочный эффект от изменения другого свойства и , что уведомление -это то, что я хочу проверить.public class MyObject : INotifyPropertyChanged
{
public string MyProperty
{
get;
set; // notify code omitted for brevity
}

public string DependentOnMyProperty
{
get; // value gets updated based on `MyProperty`
}
}

var obj = new MyObject();
obj.MyProperty = "Value"; // should notify of property changes: MyProperty and DependentOnMyProperty
< /code>
Как я могу написать мой модульный тест таким образом, чтобы он мог обнаружить событие для другого свойства? Assert.raises () , кажется, сообщает только о первом поднятом событии, а затем игнорирует остальное. В то же время, это то, что у меня сейчас есть.[Fact]
public void ComputedProperty_WhenChangingDependentValue_RaisesPropertyChangedEvent()
{
var obj = new MyObject();
var hitCounts = new Dictionary();
obj.PropertyChanged += (sender, args) =>
{
if (!hitCounts.ContainsKey(args.PropertyName!))
{
hitCounts[args.PropertyName] = 0;
}
hitCounts[args.PropertyName]++;
};

obj.MyProperty = "Test Value";

Thread.Sleep(100); // Allow time for computed property to update

obj.MyProperty.Should().Be("Test Value");
obj.DependentOnMyProperty.Should().Be("Value derived from Test Value");
hitCounts.Should().ContainKey(nameof(MyObject.DependentOnMyProperty)).WhoseValue.Should().Be(1);
}


Подробнее здесь: https://stackoverflow.com/questions/797 ... nts-raised
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»