Hi,
I have a problem with the following code. The event is not invoked. What's wrong?
I'm using Isolator 6.0.2 with VS2008 and VS2010.
Regards
Stefan Lieser
--
using System.Net;
using async.tests.native.Version6;
using NUnit.Framework;
using TypeMock.ArrangeActAssert;
namespace async.tests.typemock
{
[TestFixture, Isolated]
public class ArtikelRepositoryTests
{
private ArtikelRepository sut;
private WebClient webClient;
[SetUp]
public void Setup() {
webClient = Isolate.Fake.Instance<WebClient>(Members.ReturnRecursiveFakes);
Isolate.Swap.NextInstance<WebClient>().With(webClient);
Isolate.WhenCalled(() => webClient.DownloadDataCompleted += null).CallOriginal();
sut = new ArtikelRepository();
}
[Test, Isolated]
public void Name() {
var e = Isolate.Fake.Instance<DownloadDataCompletedEventArgs>();
var count = 0;
sut.OnArtikelGeladen += delegate { count++; };
sut.LadeArtikel();
Isolate.Invoke.Event(() => webClient.DownloadDataCompleted += null, null, e);
Assert.That(count, Is.EqualTo(1));
}
}
}
using System;
using System.Collections.Generic;
using System.Net;
using async.tests.native.Version5;
namespace async.tests.native.Version6
{
public class ArtikelRepository : IArtikelRepository
{
private readonly IArtikelReader artikelReader;
public ArtikelRepository()
: this(new ArtikelReader()) {
}
internal ArtikelRepository(IArtikelReader artikelReader) {
this.artikelReader = artikelReader;
}
public void LadeArtikel() {
var webClient = new WebClient();
webClient.DownloadDataCompleted += OnCompleted;
var url = new Uri("http://example.de/artikel");
webClient.DownloadDataAsync(url);
}
public event Action<IEnumerable<Artikel>> OnArtikelGeladen = delegate { };
private void OnCompleted(object sender, DownloadDataCompletedEventArgs e) {
var artikel = artikelReader.Read(e.Result);
OnArtikelGeladen(artikel);
}
}
}
using System.Collections.Generic;
namespace async.tests.native.Version5
{
public class ArtikelReader : IArtikelReader
{
public IEnumerable<Artikel> Read(byte[] artikelXml) {
yield break;
}
}
}